程序改错v1.0 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,否则将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 #include<stdio.h> int main() { int score; char grade; printf("Please input score:"); scanf("%d", &score); if (score < 0 || score > 100) printf("Input error!\n"); else if (score >= 90) grade = 'A’; else if (score >= 80) grade = 'B'; else if (score >= 70) grade = 'C'; else if (score >= 60) grade = 'D'; else grade = 'E'; printf("grade:%c\n", grade); return 0; }输入格式: "%d" 输入提示信息:"Please input score:\n" 输入错误提示信息:"Input error!\n" 输出格式:"grade: %c\n" (注意:%c前面有一个空格)
时间: 2024-02-14 09:17:37 浏览: 121
输入0—100的百分制分数时,程序会显示相对应的五分制分数。
以下是程序改正后的代码:
```c
#include <stdio.h>
int main() {
int score;
char grade;
printf("Please input score:\n");
if (scanf("%d", &score) != 1 || score < 0 || score > 100) {
printf("Input error!\n");
return 0;
}
if (score >= 90)
grade = 'A';
else if (score >= 80)
grade = 'B';
else if (score >= 70)
grade = 'C';
else if (score >= 60)
grade = 'D';
else
grade = 'E';
printf("grade: %c\n", grade);
return 0;
}
```
程序修改的主要问题在于输入格式和错误处理。修改后,程序会先尝试读入一个整数,如果读入失败或读入的整数不在 0 到 100 的范围内,则输出错误信息并退出程序。如果读入的数在合法范围内,则按照原有的逻辑进行转换和输出。
下面是程序的运行示例:
```
Please input score:
102
Input error!
```
```
Please input score:
-45
Input error!
```
```
Please input score:
a
Input error!
```
```
Please input score:
89
grade: B
```
```
Please input score:
75
grade: C
```
```
Please input score:
50
grade: E
```
阅读全文