关于scanf语句的疑问

来源:百度知道 编辑:UC知道 时间:2024/05/12 19:50:25
main()
{
int j;

int a[4];

for ( j = 1; j <=4;j++ )

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

printf ( "%d", a[j] );}
}
我输入 10__21__30__40__ 这4个数后,按 回车 就可以看到结果了.可是我按了回车却没有反应.

当我输入10__21__30__40__31 这5个数后按回车后看到结果了是

10__21__30__40
哪位可以帮我详细的说一下,我实在搞不明白.

其中的"__"代表空2个字符.

scanf在处理分割符为空格的时候,不是仅读入你指定的空格数据,而是连续读,直到下一个不是空格的字符才停止的。以读第一个数为例,它会一直读‘2’才结束。所以最有一次必须跟一个不是空格的字符才能停止,也就是你要输入5个数
另外你这个程序写的还有问题,数组元素是从0开始计数的,你这样用会越界的

我认为。scanf应该放在循环语句的上面。。也就是先输入数据再比较