switch 语句:
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
注意事项:
- 在case每一行的语句或程序块后面要加上break;(否则程序将会把所有程序块从前到后运行一遍。
- default是可选的,如果上面的case中没有符合的才会选择default(属于备选情况),但是如果不加default则switch语句则不会做出任何响应。
语句形式: …//其他语句 switch(表达式) { case 常量表达式1:语句或程序块1 case 常量表达式2:语句或程序块2 … case 常量表达式n:语句或程序块n default:语句或程序块n+1 } …//其他语句 流程图:
示例: 根据评级查分数区间:
3 #include<stdio.h>
4 int main()
5 {
6 char grade;
7 printf("请输入你的成绩:");
8 scanf("%c",&grade);
9 switch (grade)
10 {
11 case'A':printf("你的成绩大于九十。\n");break;
12 case'B':printf("你的成绩在八十分到九十分之间。\n");break;
13 case'C':printf("你的成绩在七十分到八十分之间。\n");break;
14 case'D':printf("你的成绩在六十分到七十分之间。\n");break;
15 case'E':printf("你的成绩在六十分以下。\n");break;
16 default:printf("请输入正确的评级。\n");
17 }
18 return 0;
19 }
分支结构的嵌套:
套娃,一个if语句套一个if语句或者一个else语句套一个if语句。
注意事项:
- else总是与其最近的if匹配:无论是switch或if语句,一定要保持写花括号的习惯,否则容易出bug。
- 在if嵌套时,要加入getchar()来屏蔽回车键,防止在判断下一个表达式时,将回车键算作一个常量。
- 用if判断单个字符时要加单引号,比如例三。
语句形式: …//其他语句 if(表达式) { if(表达式){ …} else{ … } } else{ … } …//其他语句 上方语句为简写形式,讲花括号的前者放到if后面也可以。
流程图: 示例: 例一: 判断两个数的大小
1 #include<stdio.h>
2 int main()
3 {
4 int a,b;
5 printf("请输入两个数,以供于判断大小:");
6 scanf("%d %d",&a,&b);
7 if(a<b)
8 {
9 printf("%d<%d\n",a,b);
10 }
11 else
12 {
13 if(a==b)
14 {
15 printf("%d=%d\n",a,b);
16 }
17 else
18 {
19 printf("%d>%d\n",a,b);
20 }
21 }
22 return 0;
23 }
例二: 约小花出门玩:
1 #include<stdio.h>
2 int main()
3 {
4 char israin,isfree;
5 printf("是否有空?(Y/N)\n");
6 scanf("%c",&isfree);
7 if(isfree=='Y')
8 {
9 printf("这就很好喽!\n");
10 getchar();
11 printf("是否下雨?(Y/N)\n");
12 scanf("%c",&israin);
13 if(israin=='Y')
14 {
15 printf("记得带伞哦!!!\n");
16 }
17 else
18 {
19 printf("那你快出来吧!!!\n");
20 }
21 }
22 else
23 {
24 printf("那算了!\n");
25 }
26 return 0;
27 }
例三: 小花做我女朋友!!
1 #include<stdio.h>
2 int main()
3 {
4 char a,b;
5 printf("小花,你有男朋友吗?(Y/N)\n");
6 scanf("%c",&a);
7 if(a=='Y')
8 {
9 printf("那你们在一起吧!\n");
10 }
11 else
12 {
13 getchar();
14 printf("做我女朋友好不好?(Y/N)\n");
15 scanf("%c",&b);
16 if(b=='Y')
17 {
18 printf("oh Yeah!\n");
19 }
20 else
21 {
22 printf("啊这!!!\n");
23 }
24 }
25 return 0;
26 }
|