【发布时间】:2014-09-23 02:12:28
【问题描述】:
我有一个关于在 C 中使用 for 循环的问题。请查看以下代码:
#include<stdio.h>
void main()
{
int ar[10],i;
printf("Enter 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&ar[i]);
for(i=0;i<10;i++)
printf("%d",ar[i]);
}
当我执行此操作并提供以下输入时:
1 2 3 4 5 6 7 8 9 10 11 12
我已经给出了 12 个输入,但循环应该只运行 10 次(scanf 循环)。我可以提供更多输入,除非我按 Enter 键,否则我很乐意接受。我在这里遗漏了一些关于 for 循环的内容吗?
【问题讨论】:
-
您可以输入任意数量的数字,但它只会读取其中的 10 个。下次尝试拨打
scanf()时可能会遇到问题,因为这些多余的号码仍然存在,等待读取。 -
For 循环是否应该只运行 10 次 @PaulGriffiths?
-
应该做。这就是为什么它只会读取 12 个数字中的 10 个。但是,在您按下 Enter 之前,循环的第一次迭代不会结束,所以当您的第二次迭代开始时,有 11 个数字等待被读取。您的
scanf()调用将读取由空格分隔的单个数字,无论该空格是换行符还是常规空格。在您的第一个scanf()调用返回后,它只会读取第一个数字,而您的行的其余部分仍在输入缓冲区中等待下一次scanf()调用。 -
如果您想读取 10 个数字,您应该在每次输入后终止该行而不是一行...也许这就是问题所在?