#include <stdio.h>
int main(void)
{
int marks[10];
int i;
for (i=0; i < 10; i++)
{
scanf("%d ", &marks[i]);
}
printf("\n");
for (i=0; i <= 9; i++)
{
printf("%d\n", marks[i]);
}
return 0;
}
显然,第一个循环条件应该只运行10次,但它要求我输入第11个值。有人知道吗?还是仅仅是C的许多怪异行为之一?
在第二个循环中,它按照我想要的方式工作!
答案 0 :(得分:-2)
在这种情况下,%d之后的空格是格式说明符,因此它将2个参数以空格作为分隔符。
scanf("%d %d", &marks[i], &marks[i+1]); => 1 2
scanf("%d ", &marks[i]); => 1 2
scanf("%d", &marks[i]); => 1