|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
① 2.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
① 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。
#include <stdio.h>
void main()
{ int n;
scanf ("%d",&n);
if(n>90);
printf ("A");
else if (81<=n&&n<=89)
printf("B");
else if (70<=n&&n<=79)
printf("C");
else if (60<=n&&<=69)
printf ("D");
else if (n<60)
printf ("E");
else printf("undesired value");
}
本帖最后由 jackz007 于 2019-11-11 12:00 编辑
首先,更正一个错误,根据楼主的描述,成绩分段情况如下:
90 ~ 100 :A
81 ~ 89 :B
70 ~ 79 :C
60 ~ 69 :D
0 ~ 59 :E
这样分段显然是有问题的,因为,一方面,分段没有闭合,导致分数 80 被遗漏;另一方面,各个段的划分原则不一致,明显不合理。所以,正确的分法应该是:
90 ~ 100 :A
80 ~ 89 :B
70 ~ 79 :C
60 ~ 69 :D
0 ~ 59 :E
如果这样修改是正确的,那么
以下代码是 if ... else 版本:
- #include <stdio.h>
- int main(void)
- {
- int n ;
- printf("\tEnter your score : ") ;
- scanf ("%d" , & n) ;
- if(n >= 0 && n <= 100) {
- if(n >= 90) printf("\tCLASS A\n") ;
- else if(n >= 80 && n < 90) printf("\tCLASS B\n") ;
- else if(n >= 70 && n < 80) printf("\tCLASS C\n") ;
- else if(n >= 60 && n < 70) printf("\tCLASS D\n") ;
- else printf("\tCLASS E\n") ;
- } else {
- printf("\tundesired value\n") ;
- }
- return 0 ;
- }
复制代码
以下代码是 switch ... case 版本
- #include <stdio.h>
- int main(void)
- {
- int n ;
- printf("\tEnter your score : ") ;
- scanf ("%d" , & n) ;
- switch(n / 10) {
- case 10:
- switch(n % 10) {
- case 0:
- printf("\tclass A\n") ;
- break ;
- default:
- printf("\tundesired value\n") ;
- }
- break ;
- case 9:
- printf("\tclass A\n") ;
- break ;
- case 8:
- printf("\tclass B\n") ;
- break ;
- case 7:
- printf("\tclass C\n") ;
- break ;
- case 6:
- printf("\tclass D\n") ;
- break ;
- case 5:
- case 4:
- case 3:
- case 2:
- case 1:
- case 0:
- printf("\tclass E\n") ;
- break ;
- default:
- printf("\tundesired value\n") ;
- }
- return 0 ;
- }
复制代码
以上代码请楼主测试
|
|