题目:
将百分制分数划分为五个等级: A,B,C,D,E,
分别代表
90<=score<=100 grade=A |
80<=score<=89 grade=B |
70<=score<=79 grade=C |
60<=score<=69 grade=D |
score<60 grade=E |
有四种解法:
① if语句(复杂) ② if语句(简单) ③ if语句和Switch语句 ④else if用法
① if语句(复杂)
大意:外界给一个分数,计算机先判断是否大于0,接着开始从60逐级判断,比较复杂
平均判断次数(不算小于0和大于100的):(1+2+3+4+4)/5=2.8
流程图如下:
代码如下:
#include<stdio.h>
int main()
{
int score;
char grade;
printf("请输入你的成绩");
scanf("%d", &score);
while (score >= 0)
{if (score < 60)
grade = 'E';
else
if (score < 70)
grade = 'D';
else
if (score < 80)
grade = 'C';
else
if (score < 90)
grade = 'B';
else
grade = 'A';
printf("%dis%c", score, grade);
printf("\n请输入下一名同学的成绩");
scanf("%d", &score);
}
printf("输入错误");
return 0;
}
控制台结果:
② if语句(简单)
大意:输入一个分数后,从80开始判断,相较第一种的第二种更加简便一点
平均判断次数(不算小于0和大于100的):(3+3+2+2+2)/5=2.4
流程图如下:
代码如下:
#include<stdio.h>
int main()
{
int score;
char grade;
printf("请输入你的成绩:");
scanf("%d", &score);
while (score >= 0)
{
if (score >= 0)
if (score < 80)
if (score < 70)
if (score < 60)
grade = 'E';
else
grade = 'D';
else
grade = 'C';
else
if (score < 90)
grade = 'B';
else
grade = 'A';
printf("%d is %c", score, grade);
printf("请输入新的成绩:");
scanf("%d", &score);
}
printf("输入错误");
return 0;
}
控制台结果:
③ if语句和Switch语句
大意:运用除法取商的整数,来划分等级
0 1 2 3 4 5 6 7 8 9 10
E D C B A
平均判断次数(不算小于0和大于100的):(1+2+3+4+5)/5=3
流程图如下:
以上两种流程图都可以
代码如下:
#include <stdio.h>
int main()
{
int score1, score2;
char grade;
printf("请输入你的成绩:");
scanf("%d", &score1);
score2 = score1 / 10;
switch (score2)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:grade = 'E'; break;
case 6:grade = 'D'; break;
case 7:grade = 'C'; break;
case 8:grade = 'B'; break;
case 9:
case 10:grade = 'A'; break;
default:printf("非法数据"); break;
}
printf("%d is %c", score1, grade);
return 0;
}
控制台结果如下:(只能测试一组数据)
④else if 用法
代码如下:
#include<stdio.h>
int main()
{
int score;
char grade;
printf("请输入你的成绩:");
scanf(" % d", &score);
if (score < 0 || score>100)
{
printf("输入有误");
}
else if (score >= 90 && score <= 100)
{
grade = 'A';
}
else if (score >= 80)
{
grade = 'B';
}
else if (score >= 70)
{
grade = 'C';
}
else if (score >= 60)
{
grade = 'D';
}
else if (score >=0&& score <60)
{
grade = 'E';
}
printf("%d is %c", score, grade);
return 0;
}