急求c语言大神

孤远无梦 2020-01-17 04:24:21
学生考试成绩可用百分制和等级制度两种表达方式,规定成绩大于或等于85分时等级为A,在70分到85分之间等级为B,在60到70分之间等级为C,在60分以下为不及格,其等级为D。 (1)输入成绩等级,输出相应百分制的分数段 (2)输入百分制的分数,输出相应成绩等级 我只能完成其中一种,剩下一种想不出来呀,怎么办呢?
...全文
154 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤远无梦 2020-01-19
  • 打赏
  • 举报
回复
引用 11 楼 @__Chao - L的回复:
[quote=引用 10 楼 @__Chao - L的回复:][quote=引用 7 楼 ?Victor.??的回复:][quote=引用 6 楼 寻开心的回复:]你自己写吧, 不知道啥是你能看得懂的

把有问题的代码贴出来, 不要贴图哈, 有问题大家帮你解决, 不能上来就要被人给你完整的源码, “看别人的比自己写还难”,相信这句话吧, 直接要答案也无助于自己的提高
//2020,1,17 //p115,3 #include<stdio.h> int main() { int a,p; char level; printf("输入等级请按1,输入分数请按2\n"); scanf("%d",&a); if(a==1) { printf("请输入等级:\n"); scanf("%c",&level); switch(level) { case 'A': printf(">=85"); break; case 'B': printf("70-85"); break; case 'C': printf("60-70"); break; case 'D': printf("<60"); break; default: printf("输入成绩有错!"); break; } } if(a==2) { printf("请输入分数:\n"); scanf("%d",&p); if(p>=85) printf("A"); else if(p>=70&&p<85) printf("B"); else if(p>=60&&p<70) printf("D"); } return 0; } 这个输入1之后,直接输出成绩有错,该怎么办呀[/quote] 应该是错在scanf("%c",&level)改成scanf("%c",level),你要用&的话是在使用指针的时候用[/quote] 我上面说错了,c语言最近比较少看了[/quote] 嗯,谢谢帮助
孤远无梦 2020-01-18
  • 打赏
  • 举报
回复
谢谢大家
「已注销」 2020-01-18
  • 打赏
  • 举报
回复
你输入1的时候敲了一个回车,level接收了这个回车\n,自然就错了 scanf("%d\n")会让你多敲一个回车,也有可能引起错误,加个getchar()接收掉\n即可
孤远无梦 2020-01-18
  • 打赏
  • 举报
回复
引用 6 楼 寻开心的回复:
你自己写吧, 不知道啥是你能看得懂的

把有问题的代码贴出来, 不要贴图哈, 有问题大家帮你解决, 不能上来就要被人给你完整的源码, “看别人的比自己写还难”,相信这句话吧, 直接要答案也无助于自己的提高
//2020,1,17 //p115,3 #include<stdio.h> int main() { int a,p; char level; printf("输入等级请按1,输入分数请按2\n"); scanf("%d",&a); if(a==1) { printf("请输入等级:\n"); scanf("%c",&level); switch(level) { case 'A': printf(">=85"); break; case 'B': printf("70-85"); break; case 'C': printf("60-70"); break; case 'D': printf("<60"); break; default: printf("输入成绩有错!"); break; } } if(a==2) { printf("请输入分数:\n"); scanf("%d",&p); if(p>=85) printf("A"); else if(p>=70&&p<85) printf("B"); else if(p>=60&&p<70) printf("D"); } return 0; } 这个输入1之后,直接输出成绩有错,该怎么办呀
@__Chao - L 2020-01-18
  • 打赏
  • 举报
回复
引用 10 楼 @__Chao - L的回复:
[quote=引用 7 楼 ?Victor.??的回复:][quote=引用 6 楼 寻开心的回复:]你自己写吧, 不知道啥是你能看得懂的

把有问题的代码贴出来, 不要贴图哈, 有问题大家帮你解决, 不能上来就要被人给你完整的源码, “看别人的比自己写还难”,相信这句话吧, 直接要答案也无助于自己的提高
//2020,1,17 //p115,3 #include<stdio.h> int main() { int a,p; char level; printf("输入等级请按1,输入分数请按2\n"); scanf("%d",&a); if(a==1) { printf("请输入等级:\n"); scanf("%c",&level); switch(level) { case 'A': printf(">=85"); break; case 'B': printf("70-85"); break; case 'C': printf("60-70"); break; case 'D': printf("<60"); break; default: printf("输入成绩有错!"); break; } } if(a==2) { printf("请输入分数:\n"); scanf("%d",&p); if(p>=85) printf("A"); else if(p>=70&&p<85) printf("B"); else if(p>=60&&p<70) printf("D"); } return 0; } 这个输入1之后,直接输出成绩有错,该怎么办呀[/quote] 应该是错在scanf("%c",&level)改成scanf("%c",level),你要用&的话是在使用指针的时候用[/quote] 我上面说错了,c语言最近比较少看了
@__Chao - L 2020-01-18
  • 打赏
  • 举报
回复
引用 7 楼 ?Victor.??的回复:
[quote=引用 6 楼 寻开心的回复:]你自己写吧, 不知道啥是你能看得懂的

把有问题的代码贴出来, 不要贴图哈, 有问题大家帮你解决, 不能上来就要被人给你完整的源码, “看别人的比自己写还难”,相信这句话吧, 直接要答案也无助于自己的提高
//2020,1,17 //p115,3 #include<stdio.h> int main() { int a,p; char level; printf("输入等级请按1,输入分数请按2\n"); scanf("%d",&a); if(a==1) { printf("请输入等级:\n"); scanf("%c",&level); switch(level) { case 'A': printf(">=85"); break; case 'B': printf("70-85"); break; case 'C': printf("60-70"); break; case 'D': printf("<60"); break; default: printf("输入成绩有错!"); break; } } if(a==2) { printf("请输入分数:\n"); scanf("%d",&p); if(p>=85) printf("A"); else if(p>=70&&p<85) printf("B"); else if(p>=60&&p<70) printf("D"); } return 0; } 这个输入1之后,直接输出成绩有错,该怎么办呀[/quote] 应该是错在scanf("%c",&level)改成scanf("%c",level),你要用&的话是在使用指针的时候用
寻开心 2020-01-17
  • 打赏
  • 举报
回复
你自己写吧, 不知道啥是你能看得懂的

把有问题的代码贴出来, 不要贴图哈, 有问题大家帮你解决, 不能上来就要被人给你完整的源码, “看别人的比自己写还难”,相信这句话吧, 直接要答案也无助于自己的提高
qq_1457346882 2020-01-17
  • 打赏
  • 举报
回复
你这就把他当作两个题写就好了啊。或者你可以定义一个变量,先提示选择什么方式输入成绩,比较变量,如果是百分制执行一段代码,如果是等级制执行另一段代码,用一个变量去控制两种输入方法
孤远无梦 2020-01-17
  • 打赏
  • 举报
回复
引用 2 楼 寻开心的回复:
int score [] = {100, 85, 70, 60, 0 }
char* level [] = { "S", "A", "B", "C", "D" }

输入程序成绩s,就在score里面查询,
for ( i=1; i<4; i++ )
if( s>score[i] ) {printf("%s", level[i]); break;}

如果输入等级l, 就在level里面查找
for ( i=1; i<4; i++ )
if (strcmpy(l, level[i] ) printf("%d - %d", score[i], score[i-1]), break;
能发一下完整的代码吗,有点看不懂(#-.-),谢谢
孤远无梦 2020-01-17
  • 打赏
  • 举报
回复
引用 1 楼 與蘤舊縐的回复:
不是写明白了吗,A对应85-100,B……,一个swith可以搞定,第二个switch比较难想的话就if else if else if ……吧
但是我要把他们统一到一起,就是输入字母,输出分数段,输入分数,输出等级,在一个程序里
寻开心 2020-01-17
  • 打赏
  • 举报
回复
int score [] = {100, 85, 70, 60, 0 }
char* level [] = { "S", "A", "B", "C", "D" }

输入程序成绩s,就在score里面查询,
for ( i=1; i<4; i++ )
if( s>score[i] ) {printf("%s", level[i]); break;}

如果输入等级l, 就在level里面查找
for ( i=1; i<4; i++ )
if (strcmpy(l, level[i] ) printf("%d - %d", score[i], score[i-1]), break;

「已注销」 2020-01-17
  • 打赏
  • 举报
回复
不是写明白了吗,A对应85-100,B……,一个swith可以搞定,第二个switch比较难想的话就if else if else if ……吧

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧