在C中的函数工作时无法获取此函数

在C中的函数工作时无法获取此函数,c,while-loop,C,While Loop,下面的while循环应该让用户输入从1到10的五个数字,然后打印回来 我做错了什么 我的代码 #include <stdio.h> int array[5]; int main() { int ctr= 0, nbr = 0; printf("Enter 5 numbers from 1-10\n"); while(ctr<5) { while(nbr < 1 || nbr > 10) { printf("\nEn

下面的while循环应该让用户输入从1到10的五个数字,然后打印回来

我做错了什么

我的代码

#include <stdio.h>

int array[5];
int main()
{
  int ctr= 0,
  nbr = 0;
  printf("Enter 5 numbers from 1-10\n");

  while(ctr<5)
  {
    while(nbr < 1 || nbr > 10)
    {
      printf("\nEnter number %d of 5:  ",ctr+1);
      scanf("%d",&nbr);
    }

    array[ctr]= nbr;
    ctr++;
  }
  for (ctr=0;ctr<5;ctr++)
    printf("Value %d is %d\n",ctr+1,array[ctr]);

  return(0);
}
#包括
int数组[5];
int main()
{
int ctr=0,
nbr=0;
printf(“输入1-10之间的5个数字”);
而(ctr 10)
{
printf(“\n输入编号%d,共5:”,ctr+1);
scanf(“%d”和“nbr”);
}
数组[ctr]=nbr;
ctr++;
}
对于(ctr=0;ctr
而(nbr<1 | | nbr>10)
仅工作一次,当
nbr
为0时,第一次工作

在此之后,
nbr
是有效的,因此您不会再次进入循环,您的数组将填充名称编号。您必须在循环内声明并初始化
int nbr=0;
(无论如何,您不需要在循环外)

while(nbr<1 | | nbr>10)
{
printf(“\n输入编号%d,共5:”,ctr+1);
scanf(“%d”和“nbr”);
}
数组[ctr]=nbr;
ctr++;
//在'ctr'后面加上这一行++`

nbr=0;//考虑程序的这个循环:

while(nbr < 1 || nbr > 10)
  {
   printf("\nEnter number %d of 5:  ",ctr+1);
   scanf("%d",&nbr);
  }
此外,还有其他方法可以解决此问题,您可以使用
do while
循环,该循环始终第一次执行,然后检查条件

另一种使用do while循环的方法

    do
      {
        printf("\nEnter number %d of 5:  ",ctr+1);
        scanf("%d",&nbr);
      } while (nbr < 1 || nbr > 10);
do
{
printf(“\n输入编号%d,共5:”,ctr+1);
scanf(“%d”和“nbr”);
}而(nbr<1 | | nbr>10);
现在,首先输入数字并将其存储在
nbr
中,如果它介于
1
10
之间,则退出循环并将其存储在数组中,然后再次运行外部循环,再次遇到do while,它总是第一次执行,然后检查条件,这样您就不必重新初始化
nbr=0
每次

提示

始终更清楚地描述您的问题,并告诉您希望它做什么以及它正在做什么,以便其他人能够更好地理解它,并为您提供更好、更快的解决方案。

初始化变量ctr后,您必须将更改为;或按如下所示编写它

#include <stdio.h>

main()
{
      int array[5];
      int ctr= 0, nbr = 0;
      printf("Enter 5 numbers from 1-10\n");

      while(ctr<5)
      {
          //greater than zero includes 1, less than 11 includes 10
          while(nbr > 0 || nbr < 11)
          {
               printf("\nEnter number %d of 5:  ",ctr+1);
               scanf("%d",&nbr);
           }

           array[ctr]= nbr;
           ctr++;
         }
    for (ctr=0;ctr<5;ctr++)
    {
        printf("Value %d is %d\n",ctr+1,array[ctr]);
    }
return(0);
}
#包括
main()
{
int数组[5];
int ctr=0,nbr=0;
printf(“输入1-10之间的5个数字”);
而(中心0 | | nbr<11)
{
printf(“\n输入编号%d,共5:”,ctr+1);
scanf(“%d”和“nbr”);
}
数组[ctr]=nbr;
ctr++;
}

对于(ctr=0;ctr为什么不起作用?你有什么问题?你能详细说明一下吗?它不是生成的吗?运行程序时它会崩溃吗?给出意外的结果吗?请花点时间来解释一下。@KamiKaze这与他的问题无关。@SurajJain yep,只是略读了一下,因为他没有说明问题,我认为这是错误的s可能会有帮助,但我想我猜它只适用于
%c
@KamiKaze哦,没关系:)@Someprogrammerdude变量名太明确了!怎么会错过这个:)Jean,他的循环还行。他只是忘了重置
nbr
。我不同意你更新的循环;它不太清晰。@PaulOgilvie我的答案正确吗?@PaulOgilvie你会同意这样做/尽管它更好(正如Joachim很好地评论的)。我真的不喜欢为了能够在while循环中输入一次而使条件无效的需要。这很容易出错(正如我们在这里看到的:)。我使用while/打破了python的坏习惯。请再次查看他的代码。它与您的代码相同,他的代码很难理解,他使用了int-ctr=0,下一行使用了nbr=0;因此它与您的代码相同。为什么我必须设置nbr=0;当在第一个while循环之前这样做时?因为只有满足条件,它才会进入循环内部<代码>(nbr<1 | | nbr>10)
,现在您首先初始化了nbr,因此此条件成立,我们进入循环,然后它继续运行,直到nbr在1-10之间,然后我们退出循环,nbr存储在数组中,现在对于另一个数字,您将再次进入循环,但这一次由于nbr在1-10之间,您将不会进入循环,并且永远不会abl若要输入任何其他数字,请再次查看我的答案,并询问您是否还有疑问。请仔细阅读答案。@RhodosCoder请参阅上文:)@RhodosCoder您的问题解决了吗?
while(nbr < 1 || nbr > 10)
  {
   printf("\nEnter number %d of 5:  ",ctr+1);
   scanf("%d",&nbr);
  }
#include <stdio.h>

int array[5];

int main(){

  int ctr= 0,
  nbr = 0;
  printf("Enter five numbers from 1-10\n");

  while(ctr<5){

    while(nbr < 1 || nbr > 10)//First time it enter the loop because nbr = 0
                              //But after that nbr is between 1 and 10
                              //So it does not enter again and you can not input more number.
    {
      printf("\nEnter number %d of 5:  ",ctr+1);
      scanf("%d",&nbr);
    }

    array[ctr]= nbr;
    nbr = 0;         //So That Loop Run Again
    ctr++;
  }
  for (ctr=0;ctr<5;ctr++)                 
    printf("Value %d is %d\n",ctr+1,array[ctr]);

  return(0);
}
    do
      {
        printf("\nEnter number %d of 5:  ",ctr+1);
        scanf("%d",&nbr);
      } while (nbr < 1 || nbr > 10);
#include <stdio.h>

main()
{
      int array[5];
      int ctr= 0, nbr = 0;
      printf("Enter 5 numbers from 1-10\n");

      while(ctr<5)
      {
          //greater than zero includes 1, less than 11 includes 10
          while(nbr > 0 || nbr < 11)
          {
               printf("\nEnter number %d of 5:  ",ctr+1);
               scanf("%d",&nbr);
           }

           array[ctr]= nbr;
           ctr++;
         }
    for (ctr=0;ctr<5;ctr++)
    {
        printf("Value %d is %d\n",ctr+1,array[ctr]);
    }
return(0);
}