《第四章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第四章选择结构程序设计.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 选择结构程序设计选择结构程序设计 if语句 多分支选择语句 goto语句 程序综合举例 4.1 if语句 一、一、一、一、ifififif语句的几种格式语句的几种格式语句的几种格式语句的几种格式 ifififif语语语语句句句句可可可可以以以以根根根根据据据据给给给给定定定定的的的的条条条条件件件件进进进进行行行行判判判判断断断断,以以以以决决决决定定定定执执执执行行行行某某某某个个个个分分分分支支支支程程程程序序序序段段段段。1 1 1 1基本基本基本基本if-elseif-elseif-elseif-else语句语句语句语句 其一般格式为:其一般格式为:其一般格式为:其一般格式为:
2、if(if(if(if(表达式表达式表达式表达式)语句语句语句语句1 1 1 1 else else else else 语句语句语句语句2 2 2 2 其执行过程为:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程为:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程为:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程为:首先计算表达式的值,如果表达式的值为真,则执行语句1 1 1 1(也称为(也称为(也称为(也称为ifififif子句),然后跳过语句子句),然后跳过语句子句),然后跳过语句子句),然后跳过语句2 2 2 2(也称(也称(也称(也称elsee
3、lseelseelse子句),执行紧跟在语句子句),执行紧跟在语句子句),执行紧跟在语句子句),执行紧跟在语句2 2 2 2之之之之后的语句;如果表达式的值为假,则跳过后的语句;如果表达式的值为假,则跳过后的语句;如果表达式的值为假,则跳过后的语句;如果表达式的值为假,则跳过ifififif子句,执行语句子句,执行语句子句,执行语句子句,执行语句2 2 2 2,然后继续向下,然后继续向下,然后继续向下,然后继续向下执行。执行。执行。执行。4.1 if语句 例例例例4-1 4-1 4-1 4-1 输入两个整数输入两个整数输入两个整数输入两个整数a a a a和和和和b b b b,输出其中的大数
4、。,输出其中的大数。,输出其中的大数。,输出其中的大数。分析分析分析分析 使用使用使用使用ifififif语句比较变量语句比较变量语句比较变量语句比较变量a a a a和和和和b b b b的大小,若的大小,若的大小,若的大小,若abababab,则输出,则输出,则输出,则输出a a a a,否则输出,否则输出,否则输出,否则输出b b b b。程序程序程序程序#include#include#include#include main()main()main()main()intintintint a,ba,ba,ba,b;printf(Inputprintf(Inputprintf(Inpu
5、tprintf(Input two numbers:);two numbers:);two numbers:);two numbers:);scanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&b););););if(aif(aif(aif(ab)b)b)b)printf(maxprintf(maxprintf(maxprintf(max=%=%=%=%dn,adn,adn,adn,a););););else else else else printf(max=%dn,b);printf(max=%dn,b);printf
6、(max=%dn,b);printf(max=%dn,b);4.1 if语句 例例例例4-2 4-2 4-2 4-2 对例对例对例对例3-43-43-43-4进行改进,输入三角形的三边长,求三角形面积。若输入的三进行改进,输入三角形的三边长,求三角形面积。若输入的三进行改进,输入三角形的三边长,求三角形面积。若输入的三进行改进,输入三角形的三边长,求三角形面积。若输入的三边长构不成三角形,输出一条说明信息。边长构不成三角形,输出一条说明信息。边长构不成三角形,输出一条说明信息。边长构不成三角形,输出一条说明信息。#include#include#include#include#include#
7、include#include#include main()main()main()main()float float float float a,b,c,s,areaa,b,c,s,areaa,b,c,s,areaa,b,c,s,area;printf(Inputprintf(Inputprintf(Inputprintf(Input a,b,ca,b,ca,b,ca,b,c:);:);:);:);scanf(%f,%f,%f,&a,&b,&cscanf(%f,%f,%f,&a,&b,&cscanf(%f,%f,%f,&a,&b,&cscanf(%f,%f,%f,&a,&b,&c);););
8、);if(a+bif(a+bif(a+bif(a+b c&b+cc&b+cc&b+cc&b+c a&a+ca&a+ca&a+ca&a+cb)b)b)b)s=(a+b+c)/2;s=(a+b+c)/2;s=(a+b+c)/2;s=(a+b+c)/2;area=area=area=area=sqrt(ssqrt(ssqrt(ssqrt(s*(s-a)*(*(s-a)*(*(s-a)*(*(s-a)*(s-bs-bs-bs-b)*()*()*()*(s-cs-cs-cs-c););););printf(aprintf(aprintf(aprintf(a=%7.2f,b=%7.2f,c=%7.2f,s
9、=%7.2fn,a,b,c,s);=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);printf(areaprintf(areaprintf(areaprintf(area=%7.2fn,area);=%7.2fn,area);=%7.2fn,area);=%7.2fn,area);else else else else printf(noprintf(noprintf(noprintf(no res
10、ule.nresule.nresule.nresule.n););););4.1 if语句 2 2 2 2简单简单简单简单ifififif语句语句语句语句 其一般格式为:其一般格式为:其一般格式为:其一般格式为:if(if(if(if(表达式表达式表达式表达式)语句语句语句语句A A A A 其执行过程是:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程是:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程是:首先计算表达式的值,如果表达式的值为真,则执行语句其执行过程是:首先计算表达式的值,如果表达式的值为真,则执行语句A A A A,然后继续执行,然后继续执行,然后继
11、续执行,然后继续执行ifififif语句后的下一条语句;如果表达式的值为假,则不执行语语句后的下一条语句;如果表达式的值为假,则不执行语语句后的下一条语句;如果表达式的值为假,则不执行语语句后的下一条语句;如果表达式的值为假,则不执行语句句句句A A A A,直接执行语句,直接执行语句,直接执行语句,直接执行语句A A A A之后的语句,即之后的语句,即之后的语句,即之后的语句,即ifififif语句后的下一条语句。语句后的下一条语句。语句后的下一条语句。语句后的下一条语句。4.1 if语句 例例例例4-3 4-3 4-3 4-3 用简单用简单用简单用简单ifififif语句,改写例语句,改写
12、例语句,改写例语句,改写例4-14-14-14-1的程序。的程序。的程序。的程序。分析分析分析分析 输入两个整数输入两个整数输入两个整数输入两个整数a a a a和和和和b b b b,先把,先把,先把,先把a a a a赋给变量赋给变量赋给变量赋给变量maxmaxmaxmax,再用,再用,再用,再用ifififif语句判别语句判别语句判别语句判别maxmaxmaxmax和和和和b b b b的大小,的大小,的大小,的大小,如果如果如果如果maxmaxmaxmax小于小于小于小于b b b b,则把,则把,则把,则把b b b b赋给赋给赋给赋给maxmaxmaxmax。因此,。因此,。因此,
13、。因此,maxmaxmaxmax中保存的总是大数。中保存的总是大数。中保存的总是大数。中保存的总是大数。程序程序程序程序main()main()main()main()intintintint a,b,maxa,b,maxa,b,maxa,b,max;printf(Inputprintf(Inputprintf(Inputprintf(Input two numbers:);two numbers:);two numbers:);two numbers:);scanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&b););)
14、;);max=a;max=a;max=a;max=a;if(maxif(maxif(maxif(maxb)b)b)b)max=b;max=b;max=b;max=b;printf(maxprintf(maxprintf(maxprintf(max=%=%=%=%dn,maxdn,maxdn,maxdn,max););););4.1 if语句 例例例例4-4 4-4 4-4 4-4 对例对例对例对例3-33-33-33-3进行改进,当从键盘输入一个小写英文字母时,在屏幕上输出进行改进,当从键盘输入一个小写英文字母时,在屏幕上输出进行改进,当从键盘输入一个小写英文字母时,在屏幕上输出进行改进,当从
15、键盘输入一个小写英文字母时,在屏幕上输出它的大写形式;否则,原样输出。它的大写形式;否则,原样输出。它的大写形式;否则,原样输出。它的大写形式;否则,原样输出。分析分析分析分析 英文字母是以英文字母是以英文字母是以英文字母是以ASCIIASCIIASCIIASCII码的方式存储的,判断一个字符是否为码的方式存储的,判断一个字符是否为码的方式存储的,判断一个字符是否为码的方式存储的,判断一个字符是否为小写英文字母,小写英文字母,小写英文字母,小写英文字母,可根据它的可根据它的可根据它的可根据它的ASCIIASCIIASCIIASCII码值,小于等于码值,小于等于码值,小于等于码值,小于等于zzz
16、z且大于等于且大于等于且大于等于且大于等于aaaa的即为小写英文字母。的即为小写英文字母。的即为小写英文字母。的即为小写英文字母。程序程序程序程序#include#include#include#include main()main()main()main()char char char char chchchch;printf(Inputprintf(Inputprintf(Inputprintf(Input a character:);a character:);a character:);a character:);chchchch=getchargetchargetchargetcha
17、r();();();();if(chif(chif(chif(ch=a&cha&cha&cha&ch=z)=z)=z)=z)ch=ch-32;/*ch=ch-32;/*ch=ch-32;/*ch=ch-32;/*将小写字母转换为大写字母将小写字母转换为大写字母将小写字母转换为大写字母将小写字母转换为大写字母*/putchar(chputchar(chputchar(chputchar(ch););););putchar(nputchar(nputchar(nputchar(n););););4.1 if语句 3 3 3 3多分支多分支多分支多分支if-else ifif-else ifif-e
18、lse ifif-else if语句语句语句语句 其一般形式为:其一般形式为:其一般形式为:其一般形式为:if(if(if(if(表达式表达式表达式表达式1)1)1)1)语句语句语句语句1 1 1 1 else if(else if(else if(else if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句2 2 2 2 else if(else if(else if(else if(表达式表达式表达式表达式3)3)3)3)语句语句语句语句3 3 3 3 else if(else if(else if(else if(表达式表达式表达式表达式n)n)n)n)语句语句语句语句n n
19、 n n else else else else 语句语句语句语句n+1n+1n+1n+1 if-else if if-else if if-else if if-else if语句的执行过程是:从上到下逐个对条件进行判断,一旦发现语句的执行过程是:从上到下逐个对条件进行判断,一旦发现语句的执行过程是:从上到下逐个对条件进行判断,一旦发现语句的执行过程是:从上到下逐个对条件进行判断,一旦发现条件满足就执行与它有关的语句,其下的所有条件都不再判断,当然与它们对条件满足就执行与它有关的语句,其下的所有条件都不再判断,当然与它们对条件满足就执行与它有关的语句,其下的所有条件都不再判断,当然与它们对条
20、件满足就执行与它有关的语句,其下的所有条件都不再判断,当然与它们对应的语句也不被执行,直接跳出应的语句也不被执行,直接跳出应的语句也不被执行,直接跳出应的语句也不被执行,直接跳出ifififif语句,转到语句,转到语句,转到语句,转到ifififif语句后的语句(位于语句语句后的语句(位于语句语句后的语句(位于语句语句后的语句(位于语句n+1n+1n+1n+1之后)继续执行;当任何一个条件都不满足时,执行语句之后)继续执行;当任何一个条件都不满足时,执行语句之后)继续执行;当任何一个条件都不满足时,执行语句之后)继续执行;当任何一个条件都不满足时,执行语句n+1n+1n+1n+1。4.1 if
21、语句 例例例例4-5 4-5 4-5 4-5 根据输入的学生的成绩,输出成绩的等级(根据输入的学生的成绩,输出成绩的等级(根据输入的学生的成绩,输出成绩的等级(根据输入的学生的成绩,输出成绩的等级(A A A A、B B B B、C C C C、D D D D、E E E E)。成绩等)。成绩等)。成绩等)。成绩等级划分方法如下:级划分方法如下:级划分方法如下:级划分方法如下:A A A A:90 B90 B90 B90 B:8089808980898089 C C C C:7079 D7079 D7079 D7079 D:6069606960696069 E E E E:60606060程序
22、如下:程序如下:程序如下:程序如下:#include#include#include#include main()main()main()main()intintintint score;score;score;score;printf(Inputprintf(Inputprintf(Inputprintf(Input score:);score:);score:);score:);scanf(%d,&scorescanf(%d,&scorescanf(%d,&scorescanf(%d,&score););););if(scoreif(scoreif(scoreif(score=90)=90
23、)=90)=90)printf(Anprintf(Anprintf(Anprintf(An););););else if(score=80)else if(score=80)else if(score=80)else if(score=80)printf(Bnprintf(Bnprintf(Bnprintf(Bn););););else if(score=70)else if(score=70)else if(score=70)else if(score=70)printf(Cnprintf(Cnprintf(Cnprintf(Cn););););else if(score=60)else i
24、f(score=60)else if(score=60)else if(score=60)printf(Cnprintf(Cnprintf(Cnprintf(Cn););););else else else else printf(Enprintf(Enprintf(Enprintf(En););););4.1 if语句 二、二、二、二、ifififif语句的嵌套语句的嵌套语句的嵌套语句的嵌套 if if if if子句和子句和子句和子句和elseelseelseelse子句可以是任意合法的子句可以是任意合法的子句可以是任意合法的子句可以是任意合法的C C C C语句,当它们又是语句,当它们又
25、是语句,当它们又是语句,当它们又是ifififif语句时,则构语句时,则构语句时,则构语句时,则构成了成了成了成了ifififif语句的嵌套。语句的嵌套。语句的嵌套。语句的嵌套。1 1 1 1在在在在ifififif子句中嵌套基本子句中嵌套基本子句中嵌套基本子句中嵌套基本if-elseif-elseif-elseif-else语句语句语句语句 其一般形式如下:其一般形式如下:其一般形式如下:其一般形式如下:if(if(if(if(表达式表达式表达式表达式1)1)1)1)if(if(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句1 1 1 1 else else else
26、else 语句语句语句语句2 2 2 2 elseelseelseelse 语句语句语句语句3 3 3 3 其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式1 1 1 1的值为真时,执行内嵌的的值为真时,执行内嵌的的值为真时,执行内嵌的的值为真时,执行内嵌的if-elseif-elseif-elseif-else语句;当表达语句;当表达语句;当表达语句;当表达式式式式1 1 1 1的值为假时,执行语句的值为假时,执行语句的值为假时,执行语句的值为假时,执行语句3 3 3 3。4.1 if语句 例例例例4-6 4-6 4-6 4-6 根据输入的的根据输入的
27、的根据输入的的根据输入的的x x x x值,输出值,输出值,输出值,输出y y y y值。值。值。值。#include#include#include#include main()main()main()main()intintintint x,yx,yx,yx,y;printf(Inputprintf(Inputprintf(Inputprintf(Input x:);x:);x:);x:);scanf(%d,&xscanf(%d,&xscanf(%d,&xscanf(%d,&x););););if(x=10)if(x=10)if(x=10)if(x=10)if(xif(xif(xif(x-
28、10)-10)-10)-10)y=x;y=x;y=x;y=x;printf(xprintf(xprintf(xprintf(x=%=%=%=%d,yd,yd,yd,y=x=%=x=%=x=%=x=%dn,x,ydn,x,ydn,x,ydn,x,y););););else else else else y=2*x-3;y=2*x-3;y=2*x-3;y=2*x-3;printf(xprintf(xprintf(xprintf(x=%=%=%=%d,yd,yd,yd,y=2x-3=%=2x-3=%=2x-3=%=2x-3=%dn,x,ydn,x,ydn,x,ydn,x,y););););else
29、else else else y=4*x+5;y=4*x+5;y=4*x+5;y=4*x+5;printf(xprintf(xprintf(xprintf(x=%=%=%=%d,yd,yd,yd,y=4x+5=%=4x+5=%=4x+5=%=4x+5=%dn,x,ydn,x,ydn,x,ydn,x,y););););4.1 if语句 2 2 2 2在在在在ifififif子句中嵌套简单子句中嵌套简单子句中嵌套简单子句中嵌套简单ifififif语句语句语句语句 其一般形式如下:其一般形式如下:其一般形式如下:其一般形式如下:if(if(if(if(表达式表达式表达式表达式1)1)1)1)if(i
30、f(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句1 1 1 1 else else else else 语句语句语句语句2 2 2 2 其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式1 1 1 1的值为真时,再根据表达式的值为真时,再根据表达式的值为真时,再根据表达式的值为真时,再根据表达式2 2 2 2的值,决定是否执的值,决定是否执的值,决定是否执的值,决定是否执行语句行语句行语句行语句1 1 1 1;当表达式;当表达式;当表达式;当表达式1 1 1 1的值为假时,执行语句的值为假时,执行语句的值为假时,执行语句的值为假时,
31、执行语句2 2 2 2。注意:不能写成如下的形式:注意:不能写成如下的形式:注意:不能写成如下的形式:注意:不能写成如下的形式:if(if(if(if(表达式表达式表达式表达式1)1)1)1)if(if(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句1 1 1 1;elseelseelseelse 语句语句语句语句2 2 2 2;4.1 if语句 例例例例4-7 4-7 4-7 4-7 改写的例改写的例改写的例改写的例4-64-64-64-6的程序。的程序。的程序。的程序。#include#include#include#include main()main()main(
32、)main()intintintint x,yx,yx,yx,y;printf(Inputprintf(Inputprintf(Inputprintf(Input x:);x:);x:);x:);scanf(%d,&xscanf(%d,&xscanf(%d,&xscanf(%d,&x););););y=x;/*y=x;/*y=x;/*y=x;/*先假设先假设先假设先假设x x x x属于小于属于小于属于小于属于小于-10-10-10-10的情况的情况的情况的情况*/if(x=10)/*if(x=10)/*if(x=10)/*if(x=-10)=-10)=-10)=-10)y=2*x-3;y=2
33、*x-3;y=2*x-3;y=2*x-3;else else else else y=4*x+5;y=4*x+5;y=4*x+5;y=4*x+5;printf(y=%dn,y);printf(y=%dn,y);printf(y=%dn,y);printf(y=%dn,y);4.1 if语句 3 3 3 3在在在在elseelseelseelse子句中嵌套基本子句中嵌套基本子句中嵌套基本子句中嵌套基本if-elseif-elseif-elseif-else语句语句语句语句 其一般形式如下:其一般形式如下:其一般形式如下:其一般形式如下:if(if(if(if(表达式表达式表达式表达式1)1)1)
34、1)语句语句语句语句1 1 1 1 else else else else if(if(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句2 2 2 2 elseelseelseelse 语句语句语句语句3 3 3 3 其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式其执行过程是:当表达式1 1 1 1的值为真时,执行语句的值为真时,执行语句的值为真时,执行语句的值为真时,执行语句1 1 1 1;当表达式;当表达式;当表达式;当表达式1 1 1 1的值为假的值为假的值为假的值为假时,再根据表达式时,再根据表达式时,再根据表达式时,再根据表达式2 2 2 2的
35、值,决定执行语句的值,决定执行语句的值,决定执行语句的值,决定执行语句2 2 2 2还是执行语句还是执行语句还是执行语句还是执行语句3 3 3 3。4.1 if语句 例例例例4-8 4-8 4-8 4-8 输入两个整数输入两个整数输入两个整数输入两个整数a a a a和和和和b b b b,比较其大小关系。,比较其大小关系。,比较其大小关系。,比较其大小关系。#include#include#include#include main()main()main()main()intintintint a,ba,ba,ba,b;printf(Inputprintf(Inputprintf(Input
36、printf(Input a,ba,ba,ba,b:);:);:);:);scanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&bscanf(%d%d,&a,&b););););if(aif(aif(aif(a=b)=b)=b)=b)printf(aprintf(aprintf(aprintf(a=bnbnbnbn););););else else else else if(aif(aif(aif(ab)b)b)b)printf(aprintf(aprintf(aprintf(a bnbnbnbn););););else else else else p
37、rintf(aprintf(aprintf(aprintf(a bnbnbnbn););););4.1 if语句 4 4 4 4在在在在elseelseelseelse子句中嵌套简单子句中嵌套简单子句中嵌套简单子句中嵌套简单ifififif语句语句语句语句 其一般形式如下:其一般形式如下:其一般形式如下:其一般形式如下:if(if(if(if(表达式表达式表达式表达式1)1)1)1)语句语句语句语句1 1 1 1 else else else else if(if(if(if(表达式表达式表达式表达式2)2)2)2)语句语句语句语句2 2 2 2 其执行过程是:当表达式其执行过程是:当表达式其
38、执行过程是:当表达式其执行过程是:当表达式1 1 1 1的值为真时,执行语句的值为真时,执行语句的值为真时,执行语句的值为真时,执行语句1 1 1 1;当表达式;当表达式;当表达式;当表达式1 1 1 1的值为假的值为假的值为假的值为假时,再根据表达式时,再根据表达式时,再根据表达式时,再根据表达式2 2 2 2的值,决定是否执行语句的值,决定是否执行语句的值,决定是否执行语句的值,决定是否执行语句2 2 2 2。返回返回4.2 多分支选择语句(switch语句)if if if if语句一般适用于两路选择,如果使用嵌套的语句一般适用于两路选择,如果使用嵌套的语句一般适用于两路选择,如果使用嵌
39、套的语句一般适用于两路选择,如果使用嵌套的ifififif语句,嵌套层次太多就会语句,嵌套层次太多就会语句,嵌套层次太多就会语句,嵌套层次太多就会降低程序的可读性。语言还提供了另一种用于多分支选择的降低程序的可读性。语言还提供了另一种用于多分支选择的降低程序的可读性。语言还提供了另一种用于多分支选择的降低程序的可读性。语言还提供了另一种用于多分支选择的switchswitchswitchswitch语句,其语句,其语句,其语句,其一般形式为:一般形式为:一般形式为:一般形式为:switch(switch(switch(switch(表达式表达式表达式表达式)case case case cas
40、e常量表达式常量表达式常量表达式常量表达式1:1:1:1:语句语句语句语句1 1 1 1 case case case case常量表达式常量表达式常量表达式常量表达式2:2:2:2:语句语句语句语句2 2 2 2 case case case case常量表达式常量表达式常量表达式常量表达式n:n:n:n:语句语句语句语句n n n n default:default:default:default:语句语句语句语句n+1n+1n+1n+1 defaultdefaultdefaultdefault和语句和语句和语句和语句n+1n+1n+1n+1可以省略。可以省略。可以省略。可以省略。其执行过
41、程是:首先计算表达式的值,并逐个与其执行过程是:首先计算表达式的值,并逐个与其执行过程是:首先计算表达式的值,并逐个与其执行过程是:首先计算表达式的值,并逐个与casecasecasecase后的常量表达式的值后的常量表达式的值后的常量表达式的值后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,开始执行常量表达式后相比较,当表达式的值与某个常量表达式的值相等时,开始执行常量表达式后相比较,当表达式的值与某个常量表达式的值相等时,开始执行常量表达式后相比较,当表达式的值与某个常量表达式的值相等时,开始执行常量表达式后的语句,直到遇到的语句,直到遇到的语句,直到遇到的语句,直到遇到
42、breakbreakbreakbreak语句或语句或语句或语句或switchswitchswitchswitch语句后的语句后的语句后的语句后的“”为止。如表达式的值与所为止。如表达式的值与所为止。如表达式的值与所为止。如表达式的值与所有有有有casecasecasecase后的常量表达式的值均不相同,则执行后的常量表达式的值均不相同,则执行后的常量表达式的值均不相同,则执行后的常量表达式的值均不相同,则执行defaultdefaultdefaultdefault后的语句后的语句后的语句后的语句n+1n+1n+1n+1,若没有,若没有,若没有,若没有defaultdefaultdefaultd
43、efault部分,则直接转到部分,则直接转到部分,则直接转到部分,则直接转到switchswitchswitchswitch语句后面的语句执行。语句后面的语句执行。语句后面的语句执行。语句后面的语句执行。4.2 多分支选择语句(switch语句)例例例例4-9 4-9 4-9 4-9 输入字符输入字符输入字符输入字符r r r r(或(或(或(或R R R R),),),),g(g(g(g(或或或或G)G)G)G),b b b b(或(或(或(或B B B B),),),),y y y y(或(或(或(或Y Y Y Y)时,显示对应的)时,显示对应的)时,显示对应的)时,显示对应的redred
44、redred,greengreengreengreen,blueblueblueblue,yellowyellowyellowyellow;若输入的是其他字符,显示;若输入的是其他字符,显示;若输入的是其他字符,显示;若输入的是其他字符,显示otherotherotherother。#include#include#include#include main()main()main()main()char char char char chchchch;printf(Inputprintf(Inputprintf(Inputprintf(Input a character:);a charact
45、er:);a character:);a character:);chchchch=getchargetchargetchargetchar();();();();switch(chswitch(chswitch(chswitch(ch)case r:case r:case r:case r:case case case case R:printf(redn);breakR:printf(redn);breakR:printf(redn);breakR:printf(redn);break;case g:case g:case g:case g:case case case case G:pr
46、intf(greenn);breakG:printf(greenn);breakG:printf(greenn);breakG:printf(greenn);break;case b:case b:case b:case b:case case case case B:printf(bluen);breakB:printf(bluen);breakB:printf(bluen);breakB:printf(bluen);break;case y:case y:case y:case y:case case case case Y:printf(yellown);breakY:printf(ye
47、llown);breakY:printf(yellown);breakY:printf(yellown);break;default:printf(otherndefault:printf(otherndefault:printf(otherndefault:printf(othern););););4.2 多分支选择语句(switch语句)在使用在使用在使用在使用switchswitchswitchswitch语句时应注意以下几点:语句时应注意以下几点:语句时应注意以下几点:语句时应注意以下几点:casecasecasecase后常量表达式的值不能相同,否则会出现错误。后常量表达式的值不能相
48、同,否则会出现错误。后常量表达式的值不能相同,否则会出现错误。后常量表达式的值不能相同,否则会出现错误。在在在在casecasecasecase后,允许有多个语句,可以不用后,允许有多个语句,可以不用后,允许有多个语句,可以不用后,允许有多个语句,可以不用括起来。括起来。括起来。括起来。switchswitchswitchswitch语句中的语句中的语句中的语句中的casecasecasecase和和和和defaultdefaultdefaultdefault的出现次序是任意的,但从执行效率的角度的出现次序是任意的,但从执行效率的角度的出现次序是任意的,但从执行效率的角度的出现次序是任意的,但
49、从执行效率的角度考虑,一般将发生频率较高的情况放在前面。考虑,一般将发生频率较高的情况放在前面。考虑,一般将发生频率较高的情况放在前面。考虑,一般将发生频率较高的情况放在前面。switchswitchswitchswitch语句圆括号后面表达式的类型,一般为整型、字符型或枚举型,语句圆括号后面表达式的类型,一般为整型、字符型或枚举型,语句圆括号后面表达式的类型,一般为整型、字符型或枚举型,语句圆括号后面表达式的类型,一般为整型、字符型或枚举型,casecasecasecase中常量表达式的类型应与之对应。中常量表达式的类型应与之对应。中常量表达式的类型应与之对应。中常量表达式的类型应与之对应。
50、casecasecasecase后的语句允许省略。后的语句允许省略。后的语句允许省略。后的语句允许省略。switchswitchswitchswitch中中中中breakbreakbreakbreak语句的作用是跳出语句的作用是跳出语句的作用是跳出语句的作用是跳出switchswitchswitchswitch语句体,若在执行某条语句体,若在执行某条语句体,若在执行某条语句体,若在执行某条casecasecasecase语句时语句时语句时语句时没有遇到没有遇到没有遇到没有遇到breakbreakbreakbreak语句,则程序会继续向下执行,直到遇到语句,则程序会继续向下执行,直到遇到语句,则