C语言基础问题,大神来帮忙下

![图片说明](https://img-ask.csdn.net/upload/201510/12/1444655677_144691.jpg)  就是我还没有输入等级,它就直接弹出结果了....<br>
图片说明 这是我的代码,你们看下,我已经发狂了...

 #include<stdio.h>
void main()
{
    char b;
    int a,i,s;
    printf("请输入班级总人数\n");
    scanf("%d",&s);
    i=1;
    while (i<=s)
    {
        printf("请输入该同学号数\n");
        scanf("%d",&a);
        printf("请输入该同学的等级\n");
        scanf("%c",&b);
        switch(b)
        {
        case 'a':
        case 'A':printf("号数:%d 等级:%c 分数:85~100\n",a,b);break;
        case 'b':
        case 'B':printf("号数:%d 等级:%c 分数:70~84\n",a,b);break;
        case 'c':
        case 'C':printf("号数:%d 等级:%c 分数:60~69\n",a,b);break;
        case 'd':
        case 'D':printf("号数:%d 等级:%c 分数:0~59\n",a,b);break;
        default:printf("号数:%d 等级输入错误!\n");break;
        }
        i=i+1;
    }
}

解决办法:输入完同学号数后,在scanf("%d",&a);后加一个getchar();
错误原因如下:
scanf()本身不能接收换行符即'\n', 这个换行符被第二个scanf()接收,导致提示错误,getchar()的作用可以将多余的一个字符接收掉。

default:printf("号数:%d 等级输入错误!\n");break; //没有参数

应该是没有清空输入缓冲区,在scanf("%d",&a);后面加getchar()试试。

图片说明

解决办法:输入完同学号数后,在scanf("%d",&a);后加一个getchar();
错误原因如下:
scanf()本身不能接收换行符即'\n', 这个换行符被第二个scanf()接收,导致提示错误,getchar()的作用可以将多余的一个字符接收掉。

同意上一楼的正解

同意上一楼的正解