这是我的代码,你们看下,我已经发狂了...
#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()的作用可以将多余的一个字符接收掉。
同意上一楼的正解
同意上一楼的正解