题目内容:
下面代码的功能是将百分制成绩转换为5分制成绩, 具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,否则将其转换为5分制输出。
因为我不会处理输入‘a'输出 Input error!的情况 就去搜了一下代码
#include <stdio.h>
int main()
{
printf("Please input score:\n");
int score,s;
char grade;
scanf("%d",&score);
s=score/10;
switch(s)
{
case 10:
case 9: grade='A'; printf("grade: %c\n",grade);break;
case 8: grade='B'; printf("grade: %c\n",grade);break;
case 7: grade='C'; printf("grade: %c\n",grade);break;
case 6: grade='D'; printf("grade: %c\n",grade);break;
case 5:
case 4:
case 3:
case 2:
case 1:grade='E';printf("grade: %c\n",grade);break;
default:printf("Input error!\n");
}
return 0;
}
然后这个代码运行输入’a'结果是对的
但是我有点不明白的是 为什么这个能运行的对呀 然后我就找它结果对的关键在哪里
找了下我就又发现一个点 删掉在case中进行的操作(如下代码)结果又不对了呀 这到底是为啥呀(悲)
#include <stdio.h>
int main()
{
printf("Please input score:\n");
int score,s;
char grade;
scanf("%d",&score);
s=score/10;
switch(s)
{
case 10:
case 9: break;
case 8: break;
case 7: break;
case 6: break;
case 5:
case 4:
case 3:
case 2:
case 1:break;
default:printf("Input error!\n");
}
return 0;
}