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

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

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

程序没毛病。编译器的问题吧。

你把scanf中的\n去掉

可能是它需要10个换行 然后就要输入11个数

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有关系,然后思考解决。

命令行的回车作为输入的标识,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,与命令行的输入命令冲突了

因为你的scanf的\n与系统跳出冲突

建议把10换成Num不然就浪费了

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

注意\n的使用,从终端键盘像计算机输入时,不是输入一个字符立马输出一个,而是是在按enter后数据才送入内存缓冲区,然后每次从缓冲区读一个字符,在输出该字符