《百分制成绩转换为字母等级成绩》
注:须知这里重点练习和比较的是级联的if else if和switch case语句
问题说明:输入百分制成绩,90分以上属于A,80以上属于B,70以上属于C,60以上属于D,60以下属于E
级联的if else if
这是天然的分段函数,因此非常适合用级联的if else if,代码如下,仅仅需要注意下面问题即可
- 大于号来判断是从大到小,用小于号来判断是从小到大 grade_100>=80也是80<=grade_100<90
#include<stdio.h>
int main()
{
int grade_100;
char grade_A;
printf("请输入百分制成绩:");
scanf("%d",&grade_100);
if (grade_100>=90)
{
printf("A");
} else if (grade_100>=80)
{
printf("B");
}else if (grade_100>=70)
{
printf("C");
}else if (grade_100>=60)
{
printf("D");
}else
{
printf("E");
}
return 0;
}
switch case的写法
由于switch case适合在一个点处做判断,因此我们可以将问题转换为通过十位数来判断等级,即9X表示A,代码如下
#include<stdio.h>
int main()
{
int grade_100;
char grade_A;
printf("请输入百分制成绩:");
scanf("%d",&grade_100);
switch (grade_100/10)
{
case 10:
case 9:
printf("A");
break;
case 8:
printf("B");
break;
case 7:
printf("C");
break;
case 6:
printf("D");
break;
default:
printf("E");
}
return 0;
}
总结
- 单说这个程序,其实还有改进的地方,即现在还没有实现单一出口,但是现在先这样,学了字符可以再改
- 要牢记if else if和switch case的使用场合,其实两者可以互换,但是有适合和更适合的区别
- 还是要再强调一下,switch case的控制表达式必须是int 型