C语言:输入10个数,输出最大值

请问为什么我要输入11个数才能运行?请问我应该怎么改?图片图片

c

16个回答

scanf 不需要\n
scanf加了\n后,你输入一个数后,它是不会立即显示要等再接收到一个非(空格、制表符、回车)的输入scanf语句才结束。

你把scanf中的\n去掉

scanf中的\n去掉,不需要这个。

命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了。
以后遇到这种问题,可自己输出日志排查,比如:
printf("========\n");
for(i=0; i<10; i++)
{
printf("-=-=-=%d\n", i);
scanf("%d\n", &a[i]);
printf("-----%d\n", a[i]);
}
你会发现第一次输入1时,回车后,printf("-----%d\n", a[i]);这行并未打印,直到第二次输入回车才打印。
这就会联想到跟\n有关系,然后思考解决。

weixin_39327835
weixin_39327835 谢谢你,,我感觉你的讲解好厉害⊙▽⊙
接近 3 年之前 回复

命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了。
以后遇到这种问题,可自己输出日志排查,比如:
printf("========\n");
for(i=0; i<10; i++)
{
printf("-=-=-=%d\n", i);
scanf("%d\n", &a[i]);
printf("-----%d\n", a[i]);
}
你会发现第一次输入1时,回车后,printf("-----%d\n", a[i]);这行并未打印,直到第二次输入回车才打印。
这就会联想到跟\n有关系,然后思考解决。

命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了,不能加\n

去掉scanf里的\n

int scanf(const char * restrict format,...);
函数原型如上,输入参数里面是没有'\n'的

命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了

命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了

共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐