C语言scanf的一些问题

#include<stdio.h>
int Readscore(int score[],int id[]);
int Findmax(int m,int score[]);
int main()
{
    int score[40],id[40];
    int n,m;
    n=Readscore(score,id);
    m=Findmax(n,score);
    printf("the max number is %d, the id  is %d",score[m],id[m]);
    return 0;
}
int Readscore(int score[],int id[])
{
    int i,n;
    for(i=0;;i++)
    {
     printf("input score:");
     scanf("%d",&score[i]);
     printf("input id:");
     scanf("%d\n",&id[i]);

       if(score[i]<0)
           break;
    }
           n=i;
    printf("the total number is %d\n",n);
    return n;
}
int Findmax(int m, int score[])
{
    int q,j,max;
    q=0;
    max=score[0];
    for(j=1;j<=m-1;j++)
    {
          if(score[j]>max)
          {
            max=score[j];
              q=j;
          }
    }
        return q;
}

红色部分如果加上"\n"的话,读入数据会发生错误:如图
如果把最后的"\n"去掉以后,发现输入的正确的!但是不知道其中的原理是为什么,先记录下来。等解决以后再补充完整。

经过百度查询,发现在scanf中加入"\n",得需要(整数、浮点数或者字符型)来结束输入,通过输入回车来结束输入是不正确的,控制输入结束的(整数、浮点数或者字符型)先存在缓存区中,会被下一次scanf读取。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sxypgz/article/details/79949061
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭