关于C语言中的scanf的输入问题和循环问题?

解决这个问题:
输入一个整数n和n个整数,输出这n个整数的最大值。

输入
输入有两行:第一行是一个正整数n,第二行是n个整数。

输出
输出包含一个整数,即n个数中的最大值,单独占一行。

样例输入 Copy
4
3 7 5 6
样例输出 Copy
7

我写了这段代码:

#include
int main()
{
    int i;
    int n;
    scanf("%d", &n);
    int max=0;
    int num;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &num);
        if (i == 0)
        {
            max = num;
        }
        if(maxprintf("%d", max);


    return 0;
}

第二行的数据为什么用空格隔开就能跑成功呢?

然后我又用回车一个数据占一行,同样也可以跑才成功。

如果按照第一种的情况,那么循环是怎么进行的(空格就能让循环进行依次吗?)

对于整型数据的输入,scanf默认的分隔符为所有空白字符(空格、回车和table都属于空白字符)
for循环里输入一个整型数据+空格表示当前这次循环输入完成,会执行下面的if,判断结束接着下一次循环,再输入。

详细了解下scanf()函数的用法,供参考:https://baike.baidu.com/item/scanf/10773316?fr=aladdin

scanf()判定输入是否结束一共就两种情况
第一,遇到分隔符空格、回车、制表的时候,默认结束输入,分隔符个数不限;
第二,通过格式控制结束输入,比如scanf("%d,%d,%d",&a,&b,&b);当输入123,456,789是,a=123,b=456,c=789。