![第章 选择结构程序设计_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e1.gif)
![第章 选择结构程序设计_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e2.gif)
![第章 选择结构程序设计_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e3.gif)
![第章 选择结构程序设计_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e4.gif)
![第章 选择结构程序设计_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e/045a3b98-3f8e-4a71-badc-eb54b2ac0b5e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1第第4章章 选择结构程序设计选择结构程序设计4-1 4-1 关系运算符及表达式关系运算符及表达式4-2 4-2 逻辑运算符及表达式逻辑运算符及表达式4-3 4-3 if if 语句语句4-4 4-4 switch switch 语句语句4-5 4-5 程序举例程序举例C语言语言06课件下载课件下载-样章样章.ppt目录24.1 4.1 关系运算符与关系表达式关系运算符与关系表达式所谓所谓“关系运算关系运算”实际上是实际上是“比较运算比较运算”: 若条件满足,则关系若条件满足,则关系表达式的值为表达式的值为ture(1);否则,关系表达式的值为否则,关系表达式的值为false(0)。1.
2、1. 关系运算符关系运算符: : = = != = = != 例如例如: : ab ab 表示条件表示条件 “ a a大于大于 b ”b ”, x x!=0 =0 表示条件表示条件 “ x x不等于不等于 0 0 ”, a+bxa+b 关系运算符关系运算符 赋值运算符赋值运算符 且且 = = 高于高于 = != = !=例如:例如: ab=bb=bb)=(bb)=(bc) a=bc a=bc 等效于等效于 a=(bc)a=(bc a=bc 等效于等效于a=(bc)a=(bc)算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符低低高高目录42. 关系表达式关系表达式用关系运算符将两个表
3、达式连接起来的式子。用关系运算符将两个表达式连接起来的式子。如如ab, a=80ab, a=80关系表达式的运算结果是一个逻辑值。关系表达式的运算结果是一个逻辑值。“ “成立为真成立为真(1)”(1)”,“不成立为假不成立为假(0)”(0)”如:如:5=35=3的值为的值为0 0,5=05=0的值为的值为1 1。说明:说明:1)1) 表达式可以是算术或关系、字符等表达式。表达式可以是算术或关系、字符等表达式。如如: a+bb+c: a+bb+c, a(b(b=3), a(b(b=3)目录5n关系运算符关系运算符“=”与赋值运算符与赋值运算符“=”不同。不同。 比较比较 : k=1 与与 k=1
4、n表达式表达式 a+bdc也是合法的关系表达式,但在实际应用中很少也是合法的关系表达式,但在实际应用中很少使用;因为它不能表示:使用;因为它不能表示:a+b大于大于d且大于且大于c。 n问题问题: 如何表示:如何表示:a x b 0 y b)&(n=cd)m=ab)&(n=cd);后后 n=n=?目录10If If ( ( 表达式表达式) ) 语句语句1 1;elseelse 语句语句2 2 ;4.3 if 语句语句语句语句2条件表达式条件表达式语句语句1YN1. 1. 双分支双分支 if if 语句语句流程图流程图:一般形式:一般形式:目录11执行过程:执行过程:1 1)先计
5、算条件表达式的值;)先计算条件表达式的值;2 2)若值为真(非)若值为真(非0 0)则执行语句)则执行语句1 1; 否则(值为否则(值为0 0) 执行语句执行语句2 2 ;格式说明格式说明 :语句语句1 1 和语句和语句2 2 可以是简单语句,也可以是复合语句。可以是简单语句,也可以是复合语句。语句语句2条件表达式条件表达式语句语句1YN目录12例:例: 将任意两个整数将任意两个整数mm、n n中的较大数送给中的较大数送给x x,较小数送给较小数送给y y ,然后按大小顺序输出然后按大小顺序输出( (设设mm、n n的值由键盘输入)的值由键盘输入) 分析:共分三步,分析:共分三步, S1: S
6、1: 输入两个整数给输入两个整数给mm和和n n。 S2: S2: 判断判断mm、n n的大小并分别给的大小并分别给x x和和y y 赋值。赋值。 S3: S3: 输出输出x x和和y y。 其中其中S2S2用选择结构用选择结构nIf If 语句能实现所有的选择结构语句能实现所有的选择结构目录13#include #include .h void main( ) void main( ) intint m,n,x,y; m,n,x,y; printfprintf(“n (“n enterenter two integers two integers:”);”); scanfscanf(“%d%
7、d”,&m,&n);(“%d%d”,&m,&n); if(mn) if(mn) x=m; y=n; / x=m; y=n; /* *复合语句复合语句* */ / else else x=n; x=n; y=m; /y=m; /* *复合语句复合语句* */ / printfprintf(“n x=%d, y=%d”,x,y); (“n x=%d, y=%d”,x,y); 思考:若条件改为:思考:若条件改为:mnmn,如何实现如何实现? ?目录142. 2. 单分支单分支ifif语句语句格式格式: :If If ( ( 条件条件) ) 语句语句1 1执行过程:执行
8、过程:1 1)先计算条件表达式,)先计算条件表达式,2 2)若条件为真(非)若条件为真(非0 0)则执行语)则执行语句句1 1;否则(;否则(0 0)跳过语句)跳过语句1 1 ;条件表达式条件表达式语句语句1YN流程图流程图:目录15例:输入任意数例:输入任意数n n,输出其绝对值输出其绝对值# #include include .hvoid main()void main() float a; float a; scanfscanf( “%f” , &a);( “%f” , &a); if( a0) a=-a; if( a0) a=-a; printfprintf(“n |a
9、| is: %f ”, a);(“n |a| is: %f ”, a); 目录16# #include include .hvoid main()void main() char char chch; ; printfprintf(“n enter a character:”); (“n enter a character:”); chch= =getchargetchar(); (); if( if( chch=A & =A & chch=Z) /=Z) /* *判断并处理判断并处理* */ / chch= =chch+32; +32; putcharputchar( (ch
10、ch); ); 例例: 从键盘接收一个字符,若为大写字母则转换成小写输从键盘接收一个字符,若为大写字母则转换成小写输出;否则输出原字符。出;否则输出原字符。目录17判断三角形是否直角三角形判断三角形是否直角三角形#include #include .hvoid main()void main() float a,b,c; float a,b,c; printfprintf (“ (“ 输入输入a,b,c: );a,b,c: ); scanfscanf (%f%f%f,&a,&b,&c); (%f%f%f,&a,&b,&c); if (a if (
11、a* *a ab b* *b=cb=c* *c | ac | a* *a ac c* *c c=b=b* *b|b| b b* *b bc c* *c c =a a* *a)a) printfprintf(构成一个直角三角形构成一个直角三角形 n);n); 目录18练习:输入任意两个数练习:输入任意两个数n1n1、n2,n2,按从小到大顺序输出按从小到大顺序输出# #include include .hvoid main()void main() intint n1,n2,n3,temp; n1,n2,n3,temp; printfprintf(“(“请输入两个数请输入两个数:);:); sc
12、anf scanf(%d%d,&n1,&n2);(%d%d,&n1,&n2); if (n1n2) if (n1n2) temp=n1;temp=n1; n1=n2;n1=n2; n2=temp; n2=temp; printfprintf(“(“从小到大为从小到大为: %: %d,%dn,n1,n2); d,%dn,n1,n2); 目录19练习:练习:编写程序编写程序: :1.1. 输入两个数输入两个数, , 输出两个中的最大数输出两个中的最大数2.2. 输入一个正整数输入一个正整数, , 判断并输出是奇数还是偶数判断并输出是奇数还是偶数目录203. 3. I
13、f If 语句的嵌套语句的嵌套 当当if if语句中的语句语句中的语句1 1或语句或语句2 2又是又是if if语句时,就构成了语句时,就构成了if if语句的嵌套语句的嵌套 嵌套的嵌套的if if语句能实现多分支结构语句能实现多分支结构. . if if ( (表达式1)1) if (if (表达式2) 2) 语句语句 else else 语句语句 else else if ( if (表达式3) 3) 语句语句; ; else else 语句语句; ; 目录21假设假设m是一个整型数是一个整型数15,让用户从键盘上输入所猜数字(用户已知,让用户从键盘上输入所猜数字(用户已知数的范围是数的范
14、围是1020),若猜对,则输出),若猜对,则输出 “RIGHT”,否则,输否则,输出出”WRONG“,并指出所猜的数比并指出所猜的数比m大还是小。大还是小。 分析:分析:第一步,输入猜测的数第一步,输入猜测的数n第二步,判断并输出结果:条件可以是第二步,判断并输出结果:条件可以是“m等于等于n”, 若条件成立,则输出若条件成立,则输出 RIGHT; 否则,需执行两步操作:输出否则,需执行两步操作:输出WRONG,判断判断m、n的大小:的大小:条件可以是条件可以是“nm”;条件成立时输出条件成立时输出“big”;否则输出否则输出“small”。例例: : 猜数游戏:猜数游戏:目录22 int i
15、nt m=15, n;m=15, n; printfprintf(n guess a num (1020) : );(n guess a num (1020) : ); scanfscanf(%d, &n); /(%d, &n); / if( m= =n) if( m= =n) printfprintf( RIGHT); /( RIGHT); /* *语句语句1 1* */ / else else printfprintf(n WRONG); (n WRONG); if( nm) if( nm) printfprintf(“ BIG”); /(“ BIG”); /* *语句语句
16、2 2* */ / else else printfprintf( SMALL);( SMALL); #include #include void main()void main()目录23例例: : 某幼儿园只接收某幼儿园只接收2626岁的小孩,其中岁的小孩,其中2323岁编岁编入小班,入小班,4545岁编入中班,岁编入中班,6 6岁编入大班。岁编入大班。编程实现,对输入的任意一个年龄,输出该编入什编程实现,对输入的任意一个年龄,输出该编入什麽班,或者告知麽班,或者告知“不收不收“分析:分析: 首先根据条件首先根据条件“年龄在年龄在2626岁之间岁之间”判断是判断是“收收”还还是是“不收不收
17、“, 若条件满足若条件满足( (“收收”) ) ,则,则再进一步判断该编入何班;再进一步判断该编入何班; 若条件不满足,输出若条件不满足,输出“不收不收”。目录24#include #include .hvoid main()void main() intint age; age; printfprintf(“enter(“enter age:”); age:”); scanfscanf(“%d”,&age);(“%d”,&age); if if (age=2&age=2&age=6) if if (age=3)(age=3) printf(“printf(“编
18、入小班编入小班n”);n”); elseelse if if (age=5)(age=5) printf(“printf(“编入中班编入中班n”);n”); elseelse printf(“printf(“编入大班编入大班n”);n”); elseelse printf(“printf(“不能接收不能接收n”);n”); 目录25C C语言规定:语言规定:elseelse总是与其前面最近的、还没有匹配过的总是与其前面最近的、还没有匹配过的if if相匹相匹配,并且是由里向外逐对匹配。配,并且是由里向外逐对匹配。编程时,可以通过合理使用编程时,可以通过合理使用 来明确来明确if if与与els
19、eelse匹匹配关系配关系n注意注意if if与与elseelse的匹配的匹配目录26 分析以下两个程序,哪一个能实现:从键盘上接收分析以下两个程序,哪一个能实现:从键盘上接收一个整数,若该数为正偶数,则输出一个整数,若该数为正偶数,则输出“positive positive and even.”and even.”;若为负数,则输出若为负数,则输出“negative”negative”。 提示:可画出流程图,即可看得很清楚。提示:可画出流程图,即可看得很清楚。例:例:目录27程序(程序(1 1):):#include #include .hvoid main()void main() int
20、int n; n; printfprintf(“n enter a integer:”);(“n enter a integer:”); scanfscanf(“%d”,&n);(“%d”,&n); if(n0) if(n0) if(n%2=0) if(n%2=0) printfprintf(“positive and even.n”);(“positive and even.n”); else else printfprintf(“negativen”);(“negativen”); 目录28程序(程序(2 2):):#include #include .hvoid main
21、()void main() intint n; n; printfprintf(“n enter a integer:”);(“n enter a integer:”); scanfscanf(“%d”,&n);(“%d”,&n); if(n0) if(n0) if(n%2=0) if(n%2=0) printfprintf(“positive and even.n”);(“positive and even.n”); else else printfprintf(“negativen”);(“negativen”); 目录294.3.3 多分支多分支if语句语句if (if
22、(表达式1)1)语句1;1; else else if ( if (表达式2) 2) 语句2;2; else else if ( if (表达式3) 3) 语句3;3;. . . else else 语句n;n;目录30/ /* *文件名文件名: :exam4_3.exam4_3.cppcpp* */ /#include #include .hvoid main()void main() float a,b,; float a,b,; printfprintf(输入购买重量输入购买重量:);:); scanfscanf(%f,&a);(%f,&a); if (a5) b=a i
23、f (a5) b=a* *5;5; else if (a10) b=a else if (a10) b=a* *5 5* *0.9;0.9; else if (a20) b=a else if (a20) b=a* *5 5* *0.8;0.8; else if (a50) b=a else if (a50) b=a* *5 5* *0.7;0.7; else if (a100) b=a else if (a100) b=a* *5 5* *0.6;0.6; else b=a else b=a* *5 5* *0.5;0.5; printfprintf(总金额总金额=%=%fn,b);fn,b
24、); 目录31#include void main()float grade;printf(n 请输入期末考试成绩: );scanf(%f, &grade);if (grade=90) printf(n 优);else if (grade=80) printf(n 良);else if (grade=60) printf(n 中);else printf(n 差);printf(n); 输入百分制成绩,输出对应等级目录32程序举例程序举例1 1、判断某一年是否闰年、判断某一年是否闰年, ,闰年的条件是:能被闰年的条件是:能被4 4整除、但不能被整除、但不能被100100整除,或者能被整
25、除,或者能被400400整除。整除。 (使用(使用IFIF的嵌套解决)的嵌套解决)设一标志变量设一标志变量leapleap,leap=1leap=1为闰年为闰年, ,leap=0leap=0为非闰年为非闰年. .输入输入y如果如果y能被能被4整除则整除则 如果如果y能被能被100整除则整除则 如果如果y能被能被400整除则是闰年整除则是闰年 否则不是闰年否则不是闰年 否则是闰年否则是闰年否则不是闰年否则不是闰年目录33#include void main()int year,leap=0;/* leap=0:预置为非闰年预置为非闰年*/ printf(Please input the year
26、:); scanf(%d,&year); if (year % 4=0) if (year % 100= 0) if (year % 400=0) leap=1; else leap=0; else leap=1; else leap=0; if (leap) printf(%d is a leap year.n,year); else printf(%d is not a leap year.n,year); 目录34#include void main()int year; printf(Please input the year:); scanf(%d,&year); i
27、f (year%4=0 & year%100!=0)|(year%400=0) printf(%d is a leap year.n,year); else printf(%d is not a leap year.n,year);利用逻辑运算描述复杂条件,可将上述程序优化如下:利用逻辑运算描述复杂条件,可将上述程序优化如下:目录35#include void main()int n1,n2,n3,max; printf(Please input three numbers:); scanf(%d%d%d,&n1,&n2,&n3); if (n1n2) max=
28、n1; else max=n2; if (n3max) max=n3; printf(max=%dn,max);练习练习: 输入任意三个整数输入任意三个整数n1、n2、n3,求三个数中的最大值求三个数中的最大值目录36#include void main()int n1,n2,n3,temp; printf(Please input three numbers:); scanf(%d%d%d,&n1,&n2,&n3); if (n1n2) temp=n1;n1=n2;n2=temp; if (n2n3) temp=n2;n2=n3;n3=temp; if (n1n2)
29、temp=n1;n1=n2;n2=temp; printf(Three numbers after sorted: %d,%d,%dn,n1,n2,n3); 练习:输入任意三个数练习:输入任意三个数n1、n2、n3,按从小到大的顺按从小到大的顺序排序输出。序排序输出。目录374.4 SWITCH语句语句1.1. 格式:格式:switch(switch(表达式表达式) ) case case 常量表达式常量表达式1 1:语句:语句1 1; case case 常量表达式常量表达式2 2:语句:语句2 2; case case 常量表达式常量表达式n n:语句语句n n; default defa
30、ult 语句语句n+1;n+1; 2.2. 执行顺序:执行顺序:1.1. 计算表达式的值;计算表达式的值;2.2. 若值与某个常量表达式值相等,则转到其后语句执行;若值与某个常量表达式值相等,则转到其后语句执行;3.3. 若值与所有常量表达式值都不等,则执行若值与所有常量表达式值都不等,则执行defaultdefault后语句;后语句;switchswitch 表达式表达式常量常量1 1常量常量2 2常量常量3 3常量常量4 4其它其它语句语句1 1语句语句2 2语句语句3 3语句语句4 4语句语句5 5目录38#include #include .h / /* *文件名文件名: :exam4
31、_4.exam4_4.cppcpp* */ /void main()void main() intint n; n; printfprintf(输入星期序号输入星期序号:); :); scanfscanf(%d, &n);(%d, &n); switch(n) switch(n) case 0: case 0:printfprintf(周日周日 ); ); case 1:case 1:printfprintf(周一周一 ); ); case 2:case 2:printfprintf(周二周二 ); ); case 3:case 3:printfprintf(周三周三 ); )
32、; case 4:case 4:printfprintf(周四周四 ); ); case 5:case 5:printfprintf(周五周五 ); ); default:default:printfprintf(“(“周六周六 ”);); printfprintf(n)(n)目录391)1) casecase后常量的值必须互不相同后常量的值必须互不相同,否则会出现相互矛盾,否则会出现相互矛盾2)2) casecase后的常量表达式仅起语句标号作用,并不进行条件判后的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进断。系统一旦找到入口标号,就从此标
33、号开始执行,不再进行标号判断行标号判断. . 所以必须加上所以必须加上breakbreak语句,以便结束语句,以便结束switchswitch语语句句 3)3) 各各casecase及及defaultdefault子句的先后次序,不影响程序执行结果子句的先后次序,不影响程序执行结果;4)4) 多个多个casecase子句,可共用同一语句(组)子句,可共用同一语句(组)说明:说明:目录40举例:百分制成绩转为五分制成绩。举例:百分制成绩转为五分制成绩。 Switch(s) Switch(s)S=score/10S=score/10不及不及及格及格中等中等良好良好优秀优秀其它其它6 67 78 8
34、9 9输入输入scorescore目录41参考程序如下:参考程序如下: #include void main()int score, s; printf(“Input a score(0100): ”); scanf(“%d”, &score); s = score/10; /*将成绩整除将成绩整除10*/ switch (s) case 10: case 9: printf(“grade=An”); break; case 8: printf(grade=Bn); break; case 7: printf(grade=Cn); break; case 6: printf(grade=Dn); break; default: printf(“grade=En”); 目录42#include #include .h / /* *文件名文件名: :exam4_5.exam4_5.cppcpp* */ /void main()void main() intint year, year,monmon,days,leap;,days,leap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美发店员工合同范本(7篇)
- 2024-2025学年第2课诸侯纷争与变法运动-勤径学升高中历史必修上同步练测(统编版2019)
- 2025年企业市场营销合作伙伴协议
- 2025年酒店客房用品订购合同模板
- 2025年不动产权益让与担保协议版
- 2025年电动车维修服务合同示范
- 2025年水文测量仪器项目立项申请报告模范
- 2025年企业销售专员合同格式
- 2025年恋爱双方保密协议策划模板
- 2025年度股权变更持有人协议
- GB/T 5019.5-2023以云母为基的绝缘材料第5部分:电热设备用硬质云母板
- 《工伤保险专题》课件
- 2024年农发集团招聘笔试参考题库含答案解析
- 京东运营课件
- 安宁疗护中的人文护理课件
- 头痛的护理小课件
- 热工基础(第二版)-张学学(8)第七章
- 南京师范大学-高等数学-期末试卷20套
- 胸痛中心培训课件高危胸痛识别
- 2023年新高考物理广东卷试题真题及答案详解(精校版)
- 研学旅行课程标准(一)-前言、课程性质与定位、课程基本理念、课程目标
评论
0/150
提交评论