版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第四章第四章 分支结构的分支结构的c程序设计程序设计 4.1 分支结构中的表达式分支结构中的表达式 4.2 if语句语句 4.3 switch语句语句 4.4 程序举例程序举例 24.1 分支结构中的表达式分支结构中的表达式 c语言的逻辑值 关系表达式(,=,=,=,!=) 关系表达式 关系表达式的运算结果(1,0) 逻辑表达式(&,|,!)3if(表达式)语句图 4.1 if语句执行过程 下一语句真(非0)(a)(b)假(0)表达式语 句语句假真表达式if 语语 句句 if语句的简单形式语句的简单形式 4例例 4.1 打印出不及格的成绩。5if(表达式) 语句1else 语句2 下一语句真
2、(a)(b)假表达式语句1语句1假真表达式语句2语句2图 4.2 ifelse语句执行过程 4.2.2 ifelse结构结构6例例 4.2 打印成绩60分为“pass”, 否则为“fail”。 解解 我们可以使用两种方法编程: 方法一:方法一: 用两个简单的if语句实现: main( )float score; scanf(%f, &score); if(score=60.0) printf(score=%5.1f-passn, score); 例例 4.27 运行: 50 score=50.0-fail 再次运行: 80 score= 80.0-pass 在第二个if语句中,if(score
3、=60.0)是不能缺少的,否则不管score是否小于60,都将打印出第二行的结果。 main( ) float score; scanf(%f, &score); if(score=60.0) printf(score=%5.1f-passn, score); 8方法二:方法二: 用ifelse语句实现: main( )float score; scanf(%f, &score); if(score9) y=100; else y=200; 可以写成: x=10; y=x9? 100: 200; 11例例 4.3 输入x的值, 当x0时调用sqrt(x),否则调用sqrt(-x)。 inclu
4、de include main( ) float x, y; scanf(%f, &x); y=x0? sqrt(x): sqrt(-x); printf(x=%f, y=%fn, x, y); 运行: 9.0 x=9.000000, y=3.000000再次运行: -9.0 x=-9.000000, y=3.000000 12例例 4.4 打印a, b两个数中大者。 方法一方法一: 用ifelse结构实现: main( ) int a, b; scanf(%d, %d, &a, &b); if (ab) printf(max=%dn, a); else printf(max=%dn, b);
5、 方法二方法二: 用条件运算符实现: main( ) int a, b; scanf(%d, %d, &a, &b); printf(max=%dn, ab? a:b); 13 例例 4.5 输入一个学生成绩,当成绩90时,打印“very good”;当80成绩90时,打印“good”; 当60成绩80时,打印“pass”;当成绩60分,打印“fail”。 main( ) float score; scanf(%f, &score); if(score = 80) if(score=90) printf(very goodn); else printf(goodn); else if(scor
6、e=60) printf(passn); else printf(failn); 3. if语句的嵌套语句的嵌套14运行: 85good 例如语句段: if(x) if(y) printf(a); else printf(); 其中else语句是与if(y)相匹配。如果与if(x)相匹配,则if(y)子句必须加花括号写成: if(x) if(y) printf(a); else printf(b); 15 else if结构的形式如下: if(表达式1) 语句1else if(表达式2) 语句2else if(表达式3) 语句3 else if(表达式n) 语句nelse 语句 n+1 4.2
7、.3 else if结构结构(多个分支多个分支) 16表达式1表达式2表达式3表达式n语句n语句n+1语句3真假假假假语句2语句1真真真下一语句(a)语句n语句n+1假真表达式n假真语句3表达式3真假语句2表达式2真假语句1表达式1真假(b)图 else if 结构执行过程4.317例例 4.6 将例4.5用else if结构来实现。 main( ) float score; scanf(%f, &score); if(score=90) printf(very goodn); else if (score=80) printf(goodn); else if(score=60) printf
8、(passn); else printf(failn); 运行: 58fail 18 说明: (1) 在else if结构中,if语句else if 语句else语句属于同一程序模块。程序每运行一次,仅有一个分支的语句能得到执行。 (2) 各个表达式所表示的条件必须是互相排除的,也就是说, 只有条件1(表达式1)不满足时才会判断条件2,只有条件2也不满足时才会判断条件3,其余依次类推,只有所有条件都不满足时才执行最后的else语句。 19例4.6的程序也可写成: main( ) float score; scanf(%f, &score); if (score60) printf(failn)
9、; else if(score80) printf(passn); else if(score90) printf(goodn); else printf(very goodn); 20错误的写法: main( ) float score; scanf(%f, &score); if (score=60) printf(passn); else if(score=80) printf(goodn); *无用*/ else printf(very goodn); /*无用*/ 21switch(表达式) case 常量1: 语句段1 case 常量2: 语句段2 default: 语句段n 4.
10、3 switch 语句语句22 switch语句的执行过程: switch语句先计算表达式的值,然后同多个case语句后的常量比较,找到相等的case常量则执行该常量冒号后的语句段,并从这个入口一直执行下面所有冒号后的语句,直到switch语句结束。如果执行一个或几个冒号后的语句就要跳出switch语句,则可以在跳出处使用break语句。如果switch语句后表达式的值找不到匹配的case常量,就执行default后面的语句段直到结束。default是任选项,如果没有该语句, 则在所有配对都失败时,什么也不执行。 23计算表达式的值语句段1语句段2语句段3语句段n常量1常量2常量3常量n24例
11、4.7-1 一日三餐void main( ) int now; printf(现在什么时间?n, &now); printf(1-早上n, &now); printf(2-中午n, &now); printf(3-下午n, &now); scanf(%d, &now); switch (now) case 1: printf(吃早饭); case 2: printf(吃午饭); case 3: printf(吃晚饭); default: printf(睡觉); 现在什么时间?1-早上2-中午3-下午2吃午饭吃晚饭睡觉现在什么时间?1-早上2-中午3-下午-1213睡觉25计算表达式的值语句段1
12、语句段2语句段3语句段n常量1常量2常量3常量nbreak;下一语句break;26例4.7-2 一日三餐void main( ) int now; printf(现在什么时间?n, &now); printf(1-早上n, &now); printf(2-中午n, &now); printf(3-下午n, &now); scanf(%d, &now); switch (now) case 1: printf(吃早饭); case 2: printf(吃午饭); break; case 3: printf(吃晚饭); default: printf(睡觉); 现在什么时间?1-早上2-中午3-
13、下午1吃早饭吃午饭现在什么时间?1-早上2-中午3-下午-1213睡觉现在什么时间?1-早上2-中午3-下午2吃午饭27计算表达式的值语句段1语句段2语句段3语句段n常量1常量2常量3常量nbreak;下一语句break;break;break;28例4.7-3 一日三餐void main( ) int now; printf(现在什么时间?n, &now); printf(1-早上n, &now); printf(2-中午n, &now); printf(3-下午n, &now); scanf(%d, &now); switch (now) default: printf(睡觉); brea
14、k; case 1: printf(吃早饭); break; case 2: printf(吃午饭); break; case 3: printf(吃晚饭); break; 现在什么时间?1-早上2-中午3-下午2吃午饭现在什么时间?1-早上2-中午3-下午3吃晚饭29例例 4.7 在显示器上显示一个菜单程序的模型。 include void dummy() ; int main( )char ch;printf(1 - please input a recordn);printf(2 - list all recordsn);printf(3 - delete a recordn);prin
15、tf(4 - modify a recordn);printf(nplease input your choise:n);ch = getche();printf(n);switch (ch) case 1:printf(1 - input a recordn);dummy();case 2:printf(2 - list all recordsn);dummy();case 3:printf(3 - delete a recordn);dummy();case 4:printf(4 - modify a recordn);dummy();default:printf(%c - error i
16、nput!n, ch);dummy();return 0;301 - please input a record2 - list all records3 - delete a record4 - modify a recordplease input your choise:11 - input a record2 - list all records3 - delete a record4 - modify a record1 - error input!314.4 程序举例程序举例 例 4.8 编写一个可由用户键入简单表达式的程序,形式如下: number operator number
17、 该程序要计算该表达式并以两位小数显示结果。 我们要识别的运算符operator为加、 减、 乘、 除。 32#include int main( ) float value1, value2;char op;printf(input your expression: n); scanf(%f%c%f, &value1, &op, &value2); if (op=+)printf(%.2fn, value1+value2); else if (op=-) printf(%.2fn, value1-value2); else if (op=*) printf(%.2fn, value1*val
18、ue2); else if (op=/) if (fabs(value2)1e-6)printf(division by zero.n); elseprintf(%.2fn, value1/value2); else printf(unknown operator.n); return 0;33例例 4.9 用switch语句改写例4.8。 #include int main( ) float value1, value2;char op;printf(input your expression: n); scanf(%f%c%f, &value1, &op, &value2); switch (op)case +: printf(%.2fn, value1+value2); break;case -: printf(%.2fn, value1-value2); break;case *: printf(%.2fn, value1*value2); break;case /: if (fabs(value2)1e-6)printf(division by zero.n); elseprintf(%.2fn, value1/value2); break;defau
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中政治 综合探究一教学实录 新人教版必修第一册
- 专业认识实习报告汇编6篇
- 行为目标怎么写
- 八年级历史上册 第三单元 资产阶级民主革命与中华民国的建立 第8课 革命先行者孙中山教学实录 新人教版
- 社会实践活动过程
- 6 感官总动员 教学实录-2024-2025学年科学一年级上册苏教版
- 五年级我想对您说500字满分作文10篇参考
- 员工引咎辞职辞职报告15篇
- 第6课 认识机器人构件(教学实录)2023-2024学年六年级下册信息技术闽教版
- 个人小学述职报告范文集合七篇
- 调试人员微波技术学习课件
- 足球教练员素质和角色
- 初中八年级语文课件 桃花源记【省一等奖】
- 2024年四川成都市兴蓉集团有限公司招聘笔试参考题库含答案解析
- 《傣族舞蹈教程》课件
- 专题19 诗词鉴赏(考点精讲)-【中职专用】中职高考语文一轮复习讲练测(四川适用)
- 2024北京大兴区初三(上)期末化学试卷及答案
- 推土机-推土机构造与原理
- 国家开放大学2023年7月期末统一试《22064管理学基础》试题及答案-开放专科
- 生物制药行业的经营管理制度
- 卧式单面多轴钻孔组合机床动力滑台液压系统
评论
0/150
提交评论