一、案例分析
根据输入的考试成绩等级打印出百分制分数段。
A: 80~100 B: 70~79 C: 60~69 D: <60
void main()
{
char grade;
printf("请输入考试等级A~D:");
scanf("%c",&grade) ;
switch (grade)
{
case 'A': printf("80~100\n");
case 'B': printf("70~79\n");
case 'C': printf("60~69\n");
case 'D': printf("<60\n");
default: printf("error\n");
}
}
根据输入的考试成绩等级打印出百分制分数段。
A: 80~100 B: 70~79 C: 60~69 D: <60
void main()
{
char grade;
printf(“请输入考试等级A~D:”);
scanf(“%c”,&grade);
switch (grade)
{
case ‘A’: printf(“80~100\n”); break;
case ‘B’: printf(“70~79\n”);break;
case ‘C’: printf(“60~69\n”); break;
case ‘D’: printf(“<60\n”);break;
default: printf(“error\n”);
}
}
B回车
70~79
根据输入的考试成绩(百分制整数)打印出等级水平。(使用if~else语句实现)
A: 80~100 B: 70~79 C: 60~69 D: <60
#include <stdio.h>
void main()
{
int score;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);
if(score>100) printf(“请输入0~100之间的整数\n”);
else if(score>=80) printf(“A\n”);
else if(score>=70) printf(“B\n”);
else if(score>=60) printf(“C\n”);
else printf(“D\n”);
}
根据输入的考试成绩(百分制整数)打印出等级水平。(使用switch语句实现)
A: 80~100 B: 70~79 C: 60~69 D: <60
void main()
{
int score;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);
switch (score)
{
case 80~100: printf(“A\n”);break;
case 70~79: printf(“B\n”);break;
case 60~69: printf(“C\n”);break;
case <60: printf(“D\n”);break;
default: printf(“请输入0~100之间的整数\n”);
} }
思考:不同case值时执行相同的操作,是否可以合并?
#include <stdio.h>
void main()
{
int score, p;
printf(“请输入考试成绩0~100:”);
scanf(“%d”,&score);
p=score/10;
switch (p)
{
case 0: printf(“D\n”);break;
case 1: printf(“D\n”);break;
case 2: printf(“D\n”);break;
case 3: printf(“D\n”);break;
case 4: printf(“D\n”);break;
case 5: printf(“D\n”);break;
case 6: printf(“C\n”);break;
case 7:printf(“B\n”);break;
case 8:printf(“A\n”);break;
case 9:printf(“A\n”);break;
case 10:printf(“A\n”);break;
default: printf(“请输入0~100之间的整数\n”);
}
}
switch 语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。
每一个case的常量表达式的值必须互不相同,否则出现矛盾现象。
各个case的出现次序不影响执行结果。 执行完一个case后面的语句后,流程控制转移下一个case继续执行,除非有break语句跳出switch。
default 语句为选择项,可有可无。另外,default 后面可以不加break语句。