《C程序设计教程(第四版)——谭浩强》
习题3.4 给一百分制成绩,要求输出成绩等级'A','B','C','D','E'。
90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。
代码:
//《C程序设计教程(第四版)——谭浩强》
//习题3.4 给一百分制成绩,要求输出成绩等级'A','B','C','D','E'。
//90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。
#include <stdio.h>
int main()
{
int scores = 0;
char grade;
printf("请输入你的成绩:\n");
scanf("%d",&scores);
if(scores>=90)
{
grade='A';
}
else if(scores>=80 && scores<=89)
{
grade='B';
}
else if(scores>=70 && scores<=79)
{
grade='C';
}
else if(scores>=60 && scores<=69)
{
grade='D';
}
else
{
grade='E';
}
switch(grade)
{
case 'A':
printf("你的成绩所在的等级为A\n");
break;
case 'B':
printf("你的成绩所在的等级为B\n");
break;
case 'C':
printf("你的成绩所在的等级为C\n");
break;
case 'D':
printf("你的成绩所在的等级为D\n");
break;
case 'E':
printf("你的成绩所在的等级为E\n");
break;
default:
printf("你的输入无效!!!");
}
return 0;
}
运行结果:
(1)
(2)
编写代码时遇到的问题:
(1)为什么要写if语句
这里写if语句时为了更好的与switch语句的表达式进行匹配
(2)switch语句
C语言中的switch语句是一种条件控制语句,用于根据表达式的值选择执行不同的代码块。
在C语言中,switch语句的基本语法结构如下:
switch (表达式)
{
case constant1: // 代码块1
break;
case constant2: // 代码块2
break;
...
default: // 默认代码块
}
- 表达式:可以是任何整数类型(如
char
、short
、int
、long
)或枚举类型。表达式的结果会被计算一次,然后与每个case
后面的常量值进行比较。case constantN:
:这里的constantN
是常量表达式,可以是整数常量、字符常量或枚举常量。如果表达式的值与某个case
后面的常量值匹配,则执行与该case
关联的代码块。break;
:在每个case
代码块的末尾使用break
语句来跳出switch语句。如果不使用break
,程序会继续执行下一个case
,直到遇到break
或到达switch语句的末尾,这种现象被称为“贯穿”(fall through)。default:
:是可选的,用于处理表达式值与所有case
常量都不匹配的情况。如果存在至少一个case
与表达式的值匹配,则执行相应的代码块;否则,如果提供了default
,则执行default
关联的代码块。使用switch语句时,需要注意以下几点:
case
后面的值必须是常量表达式,不能是变量或非常量表达式。- 每个
case
代码块的末尾必须有break
语句,以避免贯穿现象。default
是可选的,但建议提供,以便在没有任何情况匹配时提供一个默认的处理方式。通过这种方式,switch语句提供了一种替代多重if-else语句的方法,使得代码更加简洁和易于管理。