#include
int main()
{
char score;
scanf("%c",&score);
printf("Your grade:");
switch(score)
{
case 1:printf("A\n");break;//90-100
case 2:printf("B\n");break;//80-89
case 3:printf("C\n");break;//70-79
case 4:printf("D\n");break;//60-69
case 5:printf("E\n");break;//0-59
default:printf("输出数据错误");break;//输出数据不在范围内
}
return 0;
}
无论输入什么,输出的结果都是“输出数据错误”,这是为什么?
%c接收的是字符型, 应该用 case '1',%d接收的整形才可以直接 case 1
#include<stdio.h>
int main()
{
char score;
scanf("%c",&score);
printf("Your grade:");
switch(score)
{
case '1':printf("A\n");break;//90-100
case '2':printf("B\n");break;//80-89
case '3':printf("C\n");break;//70-79
case '4':printf("D\n");break;//60-69
case '5':printf("E\n");break;//0-59
default:printf("输出数据错误");break;//输出数据不在范围内
}
return 0;
}
switch括号中的变量是对应case后面的标签的 你现在的代码只有输入1-5才会有结果
修改如下
#include<stdio.h>
int main()
{
//这里用int来接收
int score;
scanf("%d", &score); //改为%d,结束int
printf("Your grade:");
switch (score / 10) //这里对应的常量case后面的标签
{
case 10:
case 9:printf("A\n"); break;//90-100
case 8:printf("B\n"); break;//80-89
case 7:printf("C\n"); break;//70-79
case 6:printf("D\n"); break;//60-69
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: printf("E\n"); break;//0-59
default:printf("输出数据错误"); break;//输出数据不在范围内
}
return 0;
}