c语言 大佬们 给找找错误

百分制成绩转换为五级计分制时,90分以上为A,80~89分为B,70~79分为C,60~69分为D,0~59分为E。(建议使用switch语句完成)输入格式:测试有多组,... 百分制成绩转换为五级计分制时,90分以上为A,80~89分为B,70~79分为C,60~69分为D,0~59分为E。(建议使用switch语句完成)

输入格式:
测试有多组,每组输入1个整数score。处理到输入结束。

输出格式:
逐行输出百分制成绩score对应的字符等级。若score非法,输出"error!"

输入样例:
在这里给出一组输入。例如:

1
61
102
输出样例:
在这里给出相应的输出。例如:

E
D
error!

#include<stdio.h>
#include<stdlib.h>
int main()
{
int score;
scanf("%d",&score);
if(score<0||score>100)
{
printf("error!");
}
else
{

int cj;
cj=score/10;
switch(cj)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("E");break;
case 6:printf("D");break;
case 7:printf("C");break;
case 8:printf("B");break;
case 9:
case 10:printf("A");break;
}
}
return 0;
}
展开
 我来答
xuzhouliuying
高粉答主

2018-10-24 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.4亿
展开全部

基本正确,就是没有按题目要求的“测试有多组,每组输入1个整数score。处理到输入结束。”,你的程序只能处理一组数据,就退出了。另外,0~59列的太繁琐了,实际上可以用一个简单的default来解决。

#include <stdio.h>
int main()
{
int score;
//scanf("%d",&score);//取消此句
while(1)//添加此行
{//添加大括号
scanf("%d",&score);//移至此处
if(score<0||score>100)
//{//大括号可省略
printf("error!\n");//增加换行
//}//大括号可省略
else
//{//大括号可省略
//int cj;//没必要另外再定义变量
//cj=score/10;//没必要另外再定义变量
switch(score/10)//cj改为score/10
{
//case 0:
//case 1:
//case 2:
//case 3:
//case 4:
//case 5:printf("E");break;//这几行不需要
case 6:printf("D\n");break;//增加换行
case 7:printf("C\n");break;//增加换行
case 8:printf("B\n");break;//增加换行
case 9:
case 10:printf("A\n");break;//增加换行
default:printf("E\n");//59及以下的用一条语句即可
}
//}//大括号可省略
}//添加大括号
return 0;
}

修改后的程序:

#include <stdio.h>
int main()
{
int score;
while(1){
scanf("%d",&score);
if(score<0||score>100)
printf("error!\n");
else switch(score/10){
case 6:printf("D\n");break;
case 7:printf("C\n");break;
case 8:printf("B\n");break;
case 9:
case 10:printf("A\n");break;
default:printf("E\n");
}
}
return 0;
}
追问

你修改的很对,但运行超时应该怎么办

哥若是有空 帮忙在看看  十分感谢

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式