這是我的代碼,你們看下,我已經發狂了...
#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()的作用可以將多余的一個字符接收掉。