第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,会继续扫描输入流。本回答被网友采纳