题目内容:
下面代码的功能是将百分制成绩转换为5分制成绩
具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,否则将其转换为5分制输出。
#include
int main()
{
printf("Please input score:\n");
int score,s;
char grade;
printf("%d",s); //
scanf("%d",&score);
s=score/10;
printf("%d",s); //
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 后 通过输出可以看到 赋值前s为0 赋值后s为0 输出Input error!
#include
int main()
{
printf("Please input score:\n");
int score,s;
char grade;
printf("%d",s);
scanf("%d",&score);
s=score/10;
printf("%d",s);
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:printf("case1\n");break;
default:printf("Input error!\n");
}
return 0;
}
这一个代码运行输入a 后 通过输出可以看到 赋值前s为0 赋值后s为1 输出case1
为什么这两个代码运行后输入一样 赋值前s一样 而进入的case不一样呀
输入a s为1?那你看看你的score是多少呢,应该都是输出Input error!才对
你可以不用这么写,你可以加个判断,不是0-100的分数就是直接打印Input error! 其他不变
供参考!谢谢!
#include <stdio.h>
int main(void)
{
int score;
char grade[] = "ABCDE";
printf("Please input score:\n");
scanf("%d", &score);
if (score > 100 || score < 0)
{
printf("Input error!\n");
return -1;
}
score /= 10;
switch (score)
{
case 10:
case 9:
printf("grade: %c\n", grade[0]);
break;
case 8:
printf("grade: %c\n", grade[1]);
break;
case 7:
printf("grade: %c\n", grade[2]);
break;
case 6:
printf("grade: %c\n", grade[3]);
break;
case 5:
case 4:
case 3:
case 2:
case 1:
printf("grade: %c\n", grade[4]);
break;
default:
printf("Input error!\n");
}
return 0;
}