为什么c语言中我只定义一个int[10]的话 for(i=0; i<10;i++) scanf()

为什么c语言中我只定义一个int[10]的话
for(i=0; i<10;i++)
scanf()
输入数组元素时能一直输?
能输大于10个数,甚至更多而不跳出循环

楼主需要理解一下C语言输入输出流的概念。
scanf这个函数以空白字符(空格,制表符,回车符都算)作为间隔符,以回车符作为结束符。
当C语言执行到scanf这句话的时候,会检查输入流是否为空,如果为空,程序就会停止,然后等待用户输入。
当用户输入回车时,输入结束,C语言会将刚才用户输入的数据传递给scanf函数,由他来根据程序要求从输入流中获取数据。.
for(i=0;
i<10;i++)
scanf();
楼主的这种写法相当于执行10次scanf。第一次执行scanf时,输入流一定为空,就等待你的输入。这个时候只要你不输入回车,输入过程就不会停止,就不会执行程序,更别提跳出循环了。
当输入回车的时候,scanf开始扫描,扫描到空白字符的时候,将开始到空白字符之间的字符转换成十进制数字赋值给你的参数。第一个scanf结束。
开始执行第二个scanf,如果上次扫描还没有到末尾,就不会停止等待输入,就在上次的输入流基础上再次扫描,一直到空白符停止。一次类推,当10次scanf结束时,循环也就停止了。
楼主所说的输入大于10个数字而不跳出循环,是不是一直没有敲回车呀,只有敲了回车之后输入过程才会停止,才会将输入的数据给scanf去扫描。如果不敲回车,一直处于输入状态的。
如果输入的数据超过10个再敲回车也没关系,scanf只会把前10个提取出来,后续的数字还在输入流中而已,如果后面还有scanf,会继续扫描输入流。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-08
int[10] //这样定义错误

定义数组,要给数组起一个名字

例如:
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
第2个回答  2015-01-08
scanf(%d,a[i])这样输追答

%d少了个双引号

追问

我知道。。我只是少写了里面的参数

我的意思不是问的那个

参数我知道的

追答

回车停止输入,就算你输入超过10个数它也算做错误没有地址赋予的

第3个回答  推荐于2018-04-04
楼主需要理解一下C语言输入输出流的概念。

scanf这个函数以空白字符(空格,制表符,回车符都算)作为间隔符,以回车符作为结束符。

当C语言执行到scanf这句话的时候,会检查输入流是否为空,如果为空,程序就会停止,然后等待用户输入。
当用户输入回车时,输入结束,C语言会将刚才用户输入的数据传递给scanf函数,由他来根据程序要求从输入流中获取数据。.

for(i=0; i<10;i++)
scanf();
楼主的这种写法相当于执行10次scanf。第一次执行scanf时,输入流一定为空,就等待你的输入。这个时候只要你不输入回车,输入过程就不会停止,就不会执行程序,更别提跳出循环了。

当输入回车的时候,scanf开始扫描,扫描到空白字符的时候,将开始到空白字符之间的字符转换成十进制数字赋值给你的参数。第一个scanf结束。

开始执行第二个scanf,如果上次扫描还没有到末尾,就不会停止等待输入,就在上次的输入流基础上再次扫描,一直到空白符停止。一次类推,当10次scanf结束时,循环也就停止了。

楼主所说的输入大于10个数字而不跳出循环,是不是一直没有敲回车呀,只有敲了回车之后输入过程才会停止,才会将输入的数据给scanf去扫描。如果不敲回车,一直处于输入状态的。

如果输入的数据超过10个再敲回车也没关系,scanf只会把前10个提取出来,后续的数字还在输入流中而已,如果后面还有scanf,会继续扫描输入流。本回答被网友采纳
相似回答