在这个程序中,应该在输入值2之前而不是之后打印语句“i is 1”。

时间:2013-08-09 16:20:12

标签: c scanf

我写了一个简单的c代码如下

#include<stdio.h>
void main()
{
    int a[3];
    int i;
for(i=0;i<=2;i++)
{
    printf("i is %d\n",i);
    scanf("%d ",&a[i]);
}
for(i=0;i<=2;i++)
    printf("a[%d] is %d\n",i,a[i]);

}

问题是当我运行程序时,我必须输入两个值,当我是0(不是一个)时,这样

i is 0
1
2
i is 1
3
i is 2
4

即使输出正确,即

a[0] is 1
a[1] is 2
a[2] is 3

为什么我必须输入4个值而不是3个,为什么在我输入2之前语句i是1?

1 个答案:

答案 0 :(得分:1)

变化:

scanf("%d ",&a[i]);

为:

scanf("%d",&a[i]);

额外的空间是你所有问题的根源,因为它正在吃空白。