[精选]C语言程序设计流程控制语句-资料课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[精选]C语言程序设计流程控制语句-资料课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 语言程序设计 流程 控制 语句 资料 课件
- 资源描述:
-
1、C语言程序设计语言程序设计第四章第四章 流程控制语句流程控制语句 实际工作中,顺序结构是不能满足程序设计要实际工作中,顺序结构是不能满足程序设计要求的,因为大量的实际问题需要通过流程的控制来求的,因为大量的实际问题需要通过流程的控制来解决的。解决的。例如:例如:如果明天气温高于如果明天气温高于35c,我将去游泳,否则在家看,我将去游泳,否则在家看看电视。看电视。或我将做作业直到晚上十点。或我将做作业直到晚上十点。从程序结构上看,就是通过循环结构和选择结构来从程序结构上看,就是通过循环结构和选择结构来实现的。实现的。4-1 选择结构语句选择结构语句4.1.1 if语句语句 程序设计过程中,常常需
2、要根据某一条件是否满足程序设计过程中,常常需要根据某一条件是否满足来判断做或者不做某件事。这种结构在来判断做或者不做某件事。这种结构在c中是通过中是通过if语句语句实现的。实现的。if语句的三种形式语句的三种形式(1)形式一: If (表达式) 语句说明:表达式通常为关系表达式或逻辑表达式,两边的括号必不可少,当语句不止一句的时候,可以使用一组括号把他们组成复合语句。 例如:If (xy) printf( “%d”, x);否表达式语句真否流程图流程图执行过程:执行过程:先计算表达式的值,如果表达式先计算表达式的值,如果表达式的值为非零,则执行语句;如果的值为非零,则执行语句;如果值为零,则跳
3、过值为零,则跳过if语句执行其后语句执行其后续语句。续语句。例例4.1 4.1 一个猜字游戏程序。程序运行时,一个猜字游戏程序。程序运行时,要求游戏者从键盘输入一个数,如果猜要求游戏者从键盘输入一个数,如果猜对了,屏幕显示对了,屏幕显示“* * *RightRight* * *”;否则屏;否则屏幕不显示任何信息。幕不显示任何信息。举例举例 #include #include main() main() int magic=123; int magic=123; int guess; int guess; printf( printf(“Enter your guess:);Enter your
4、 guess:); scanf( scanf(“%d,&guess);%d,&guess); if (guess=magic) if (guess=magic) printf( printf(“* * *RightRight* * *n);n); if语句的三种形式(2) 形式二: If (表达式) 语句1 else 语句2 例如:If (xy) printf “%d”, x);Else printf(“%d”,y);真(非真(非0)假(假(0)表达式成立吗?表达式成立吗?语句序列语句序列1语句序列语句序列2执行过程:执行过程:先计算表达式的值,如果表达式的值为非零,则执行语先计算表达式的值,
5、如果表达式的值为非零,则执行语句句1后跳过语句后跳过语句2而执行后续语句;如果值为零,则跳过而执行后续语句;如果值为零,则跳过语句语句1执行语句执行语句2。注意:注意:1.c语言每条语句必须以分号结束,因此语言每条语句必须以分号结束,因此else之前有之前有一分号,整个语句结束处有一分号。一分号,整个语句结束处有一分号。例:例:if(ab) printf(“%d”,a); else printf (“%d”,b); 正确正确if(ab) printf(“%d”,a) else printf (“%d”,b); 错误错误2.语句语句1与语句与语句2不能同时执行。不能同时执行。 例例4.2 4.2
6、 将例将例4.14.1程序中的程序中的ifif语句改成语句改成if-elseif-else语句,如果游戏者猜对了,就语句,如果游戏者猜对了,就显示显示”* * *RightRight* * *”,若猜错了,就显,若猜错了,就显示示“* * *WrongWrong* * *”。举例举例 #include #include main() main() int magic=123; int magic=123; int guess; int guess; printf(Enter your guess:); printf(Enter your guess:); scanf(%d,&guess); s
7、canf(%d,&guess); if (guess=magic) if (guess=magic) printf( printf(* * *RightRight* * *n);n); else else printf( printf(* * *WrongWrong* * *n);n); if 语句的三种形式语句的三种形式(3)形式三: if (表达式1) 语句1;else if (表达式2) 语句2; else if (表达式3) 语句3;.else if (表达式n) 语句序列n;else 语句序列n+1; 这种形式可以实现多分支选择的功能,既在多种这种形式可以实现多分支选择的功能,既在多
8、种条件下的不同分支中选择一个分支来执行。条件下的不同分支中选择一个分支来执行。 它的执行过程为:若表达式它的执行过程为:若表达式1的值为真(非零),的值为真(非零),则执行语句则执行语句1;否则,若表达式;否则,若表达式2的值为真,则执行的值为真,则执行语句语句2;.若上述表达式的值都为若上述表达式的值都为0时,执行语句时,执行语句n+1.以下为流程图:以下为流程图:例如:表达式表达式1成立吗成立吗?真真(非非0)语句序列语句序列1语句序列语句序列2真真(非非0)语句序列语句序列3真真(非非0)语句序列语句序列n真真(非非0)表达式表达式2成立吗成立吗?假假(0)表达式表达式3成立吗成立吗?假
9、假(0)表达表达式式n成成立吗立吗?假假(0)语句序语句序列列n+1假假(0)if (x0) y=1;else if (x=0) y=0; else y=-1;例例4.3 4.3 例例4.24.2再扩充,即当游戏者猜错时,屏再扩充,即当游戏者猜错时,屏幕除显示幕除显示“* * *WrongWrong* * *”外,还告诉游戏者是外,还告诉游戏者是猜大了还是猜小了。猜大了还是猜小了。举例举例 #include #include main() main() int magic=123; int magic=123; int guess; int guess; printf(Enter your g
10、uess:); printf(Enter your guess:); scanf(%d,&guess); scanf(%d,&guess); if (guess=magic) if (guess=magic) printf( printf(* * *RightRight* * *n);n); else if(guessmagic) else if(guessmagic) printf( printf(* * *WrongWrong* * *nToo highnToo high* * *n)n) else else printf( printf(* * *WrongWrong* * *nToo
11、lownToo low* * *n);n);说明说明:以上三种格式中的表达式一般为关系表达式或逻辑表达式只要以上三种格式中的表达式一般为关系表达式或逻辑表达式只要表达式的结果不为表达式的结果不为0,系统就认为该表达式成立;相反表达式,系统就认为该表达式成立;相反表达式的结果为的结果为0,系统认为该表达式不成立。,系统认为该表达式不成立。例如:例如:if(a=b&x=y) printf(“a=b,x=y”);系统对表达式的值进行判断,若为真,按非零处理,执行指定的系统对表达式的值进行判断,若为真,按非零处理,执行指定的语句;若为假,按零处理。语句;若为假,按零处理。 如:如:if (3) pri
12、ntf(“ok.”)表达式的值为表达式的值为3,按真处理,是合法的,执行结果输出,按真处理,是合法的,执行结果输出“ok.”由此可见由此可见.在在C语言中它也可以是任意的数值表达式。(包括整型,语言中它也可以是任意的数值表达式。(包括整型,字符型,实型,指针型)。字符型,实型,指针型)。在每个表达式之后不应有任何标点符号,而在每个在每个表达式之后不应有任何标点符号,而在每个语句之后都要有语句之后都要有“;” 不要误认为不要误认为else 语句和语句和if语句是两个语句,语句是两个语句,else 是是if语句的一部分。只能与语句的一部分。只能与 if 配对使用。仅配对使用。仅 else 本身不能
13、本身不能单独作为一个语句使用单独作为一个语句使用 每个语句又都可以由若干每个语句又都可以由若干C语言的语句组成,如果语言的语句组成,如果由两个以上语句构成语句序列,则应用大括号括起来由两个以上语句构成语句序列,则应用大括号括起来构成一个复合语句。括号之外不再加构成一个复合语句。括号之外不再加 “;”.如:如:if(a+bc&b+ca&c+ab) s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%6.2f”,area); else printf(“it is wrong”);内是一个完整的复合语句,不需另附分号。内是一个完整的复
14、合语句,不需另附分号。例:输入两个实数,按代数值有小到大次序输出这两例:输入两个实数,按代数值有小到大次序输出这两个数。个数。main()float a,b,t;scanf(“%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(“%5.2f, %5.2f”,a,b);运行情况如下:运行情况如下:3.6,-3.2-3.20,3.604.1.2 if 语句的嵌套语句的嵌套 if语句的三种形式的语句体中可以是任意的c语言语句,包括if语句。如果if的语句体又是if语句,称为嵌套的if语句。内嵌的if语句既可以嵌套在if子句,也可以在else子句中。例如:求a,b,c三个数中
15、最大值if (a=b) if (a=c) max=a; else max=c;else if (b=c) max=b; else max=c;内嵌内嵌if内嵌内嵌if二义性:二义性: if (表达式表达式1) if (表达式表达式2) 语句序列语句序列2;else 语句序列语句序列3;应如何理解?应如何理解?有两种理解方式有两种理解方式:if (表达式表达式1) if (表达式表达式2) 语句序列语句序列2; else 语句序列语句序列3;if (表达式表达式1) if (表达式表达式2) 语句序列语句序列2;else 语句序列语句序列3;语言规定:语言规定:else总是与它前面最近的且未曾配
16、对的总是与它前面最近的且未曾配对的if配对。配对。if (表达式表达式1) if (表达式表达式2) 语句序列语句序列2; else 语句序列语句序列3; if (表达式表达式1) if (表达式表达式2) 语句序列语句序列2;else 语句序列语句序列3;举例举例 用嵌套用嵌套ifif结构代替例结构代替例4.34.3中的中的 if-else-ifif-else-if结构。结构。#include #include main() main() int magic=123; int magic=123; int guess; int guess; printf(“Enter your guess:
17、”); printf(“Enter your guess:”); scanf(“%d”,&guess); scanf(“%d”,&guess); if (guess=magic) if (guess=magic) printf(“ printf(“* * *RightRight* * *n”);n”); else else printf(“ printf(“* * *WrongWrong* * *”);”); if (guessmagic) if (guessmagic) printf(“Too high printf(“Too high* * *n”);n”); else else prin
18、tf(“Too printf(“Too lowlow* * *n”); n”); 4.1.34.1.3. . 条件运算符条件运算符若若ifif语句中,在表达式为真和假时,且都只执行一个赋语句中,在表达式为真和假时,且都只执行一个赋值语句给同一个变量赋值时,可以用条件运算符来处值语句给同一个变量赋值时,可以用条件运算符来处理。理。条件运算符条件运算符 ? :? :条件表达式条件表达式 exp1?exp2:exp3exp1?exp2:exp3 exp1 exp1、exp2exp2和和exp3exp3都是表达式,其功能是:都是表达式,其功能是:先计算先计算exp1exp1,若,若exp10exp10
19、,则计算,则计算exp2exp2,将,将exp2exp2的值作为整个的值作为整个条件表达式的值;若条件表达式的值;若exp1=0exp1=0,则计算,则计算exp3exp3,将,将exp3exp3的的值作为整个条件表达式的值。值作为整个条件表达式的值。 如:如:if(ab) c=a;else c=b;if(ab) c=a;else c=b; 可以改写为:可以改写为:c=(ab)?a:bc=(ab)?a:b表示:若表示:若abab,取,取a a的值,否则取的值,否则取b b的值作为该条件表达式的值作为该条件表达式的值。的值。说明:说明:1.条件运算符要求有三个操作对象。条件运算符要求有三个操作对
20、象。2.条件运算符优先于赋值运算符,因此上面赋值表达条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给式的求解过程是先求解条件表达式,再将它的值赋给c.条件运算符的优先级别比关系运算符和算术运算符都条件运算符的优先级别比关系运算符和算术运算符都低低 max=(ab)?a:b 括号可以不要:括号可以不要: max=ab?a:b如果有:如果有:ab?a:b+1相当于:相当于:ab?a:(b+1)3.条件运算符的结合方向为条件运算符的结合方向为“自右向左自右向左”,若有:,若有: ab?a:cd?c:d相当相当 于:于: ab?a:(cd?c:d)若:若:a=
21、1,b=2,c=3,d=4 则条件表达式值为则条件表达式值为4。4.条件表达式不能取代一般的条件表达式不能取代一般的if语句,只有语句,只有if语句中内语句中内嵌的的语句为赋值语句(且两个分支都给同一个变量嵌的的语句为赋值语句(且两个分支都给同一个变量赋值)时才能代替赋值)时才能代替if语句。语句。如:如: if(ab) printf(“%d”,a); else printf(“%d”,a);无法用条件表达式代替无法用条件表达式代替但可以用下面语句代替:但可以用下面语句代替: printf(“%d”,ab?a:b); /将条件表达式的值输出将条件表达式的值输出/5.条件表达式中,表达式条件表达
22、式中,表达式1的类型可以与表达式的类型可以与表达式2和表达式和表达式3不同。如:不同。如: x? a : bx是整形变量是整形变量,若若x=0,则条件表达式的值为,则条件表达式的值为b表达式表达式2和表达式和表达式3的类型也可以不同。此时条件的类型也可以不同。此时条件表达式的值的类型为二者中较高的类型。如:表达式的值的类型为二者中较高的类型。如: xy?1:1.5如果如果xy,则表达式的值为则表达式的值为1.5。若。若xy,值应为值应为1,由于由于1.5是实型比整型高,因此应转换为是实型比整型高,因此应转换为1.0用条件表达式代替例用条件表达式代替例4.34.3中的中的if-elseif-el
23、se。举例举例 #include #include main()main() int magic=123; int magic=123; int guess; int guess; printf(“ Enter your guess: ”); printf(“ Enter your guess: ”); scanf(“ %d ”,&guess); scanf(“ %d ”,&guess); if (guess=magic) if (guess=magic) printf(“ printf(“ * * *RightRight* * *n ”);n ”); else else printf(“ p
24、rintf(“ * * *WrongWrong* * * ”); ”); guessmagic?printf(“ Too guessmagic?printf(“ Too highn ”) :printf(“Too highn ”) :printf(“Too lown”);lown”); 4.1.4 switch /break4.1.4 switch /break语句语句多分支多分支switch 结构结构switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default : 语句n+1语句n+1表达式语句1语句2语句n常量表达
25、式常量表达式2常量表达式常量表达式1常量表达式常量表达式n其它其它 if-else-if结构或嵌套的结构或嵌套的if语句可以解决多分支的选择问题,语句可以解决多分支的选择问题,但若判断条件太多,关系就不够清晰,但若判断条件太多,关系就不够清晰,switch可解决。可解决。说明说明:1.switch后面括弧内的后面括弧内的“表达式表达式”和和case常量表达式,可常量表达式,可以是任何类型。以是任何类型。2.当表达式的值与某一个当表达式的值与某一个case后面的常量表达式的值相后面的常量表达式的值相等时,就执行此等时,就执行此case后面的语句,若所有的后面的语句,若所有的case中的常中的常量
展开阅读全文