




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4第四章选择结构程序设计 第一页,共三十三页。8/23/20221重庆理工大学 计算机学院 基础教研室第四章 选择结构程序设计 4.1语句的分类 C语言将语句(statement)分成以下几类:控制语句函数调用语句空语句表达式语句复合语句第二页,共三十三页。8/23/20222重庆理工大学 计算机学院 基础教研室if ( ) else (条件语句)switch(多分支选择语句)for ( ) (循环语句)while ( ) (循环语句)do while ( ) (循环语句)1.控制语句第三页,共三十三页。8/23/20223重庆理工大学 计算机学院 基础教研室1.控制语句continue(结束
2、本次循环语句)break(中止执行switch或循环语句)goto(转向语句)return(从函数返回语句) 第四页,共三十三页。8/23/20224重庆理工大学 计算机学院 基础教研室2.函数调用语句函数调用语句由一个函数调用加上一个分号(;)构成。例如:printf(“Hello!”);3.空语句只有一个分号(;)的语句。空语句不执行任何操作。例如:;第五页,共三十三页。8/23/20225重庆理工大学 计算机学院 基础教研室4.表达式语句由C语言的任意合法表达式加上一个分号(;)构成。例如:函数调用属于表达式的一种,而空语句则是没有任何表达式的语句 i+ ; (使变量的值加1)x + y
3、 ;(完成x + y 操作,但不将其结果赋给 某一变量,所以该语句无实际意义); (空语句)printf (“Hello!”); (函数调用语句) 第六页,共三十三页。8/23/20226重庆理工大学 计算机学院 基础教研室5.复合语句包含在由左花括号开始,右花括号结束的一组语句,在逻辑上构成一个整体,称为复合语句。例如:x = k + t ;y = x %5 ;printf (“y is % d”, y); 任何可以放置语句的地方,都可以放置复合语句 第七页,共三十三页。8/23/20227重庆理工大学 计算机学院 基础教研室4.2关系运算符、逻辑运算符、条件运算符 本章将着重讨论利用选择控
4、制实现选择结构程序设计。选择控制是指根据指定的条件是否满足,选择下一步要执行的语句。满足为真,不满足为假。 对于条件的描述,最为常见的就是关系表达式。其一般形式: 4.2.1 关系运算符和关系表达式操作数 关系运算符操作数 每个操作数可以是变量、常量或者是任意有效的C语言表达式。第八页,共三十三页。8/23/20228重庆理工大学 计算机学院 基础教研室大于 a b 大于等于 a = b小于 a b 小于等于a = b等于 a = b 不等于 a != b6种关系运算符: 关系表达式只能产生两个数值之一:0 或 1。一个判定为真的关系表达式的值为1;一个判定为假的关系表达式的值为0。 C语言中
5、,逻辑值真为1;逻辑值假为0。 第九页,共三十三页。8/23/20229重庆理工大学 计算机学院 基础教研室关系运算符的优先级低于算术运算符的优先级,但高于赋值运算符的优先级。其结合性是左结合性。 例如:a=20, b=70, c=50, d=90, 有下列表达式:ad 相当于(ad, ad 为假,整个表达式的值为0k=a+bc+d 相当于k=(a+b) (c+d), 即 k = (90 C 的值为0表达式 C a 的值为1 第十一页,共三十三页。8/23/202211重庆理工大学 计算机学院 基础教研室逻辑运算符将其操作数视为逻辑值,即“真”或“假”。而C语言对于操作数真假的判定采取了如下原
6、则: 4.2.2 逻辑运算符和逻辑表达式 三种逻辑运算符:逻辑非 ! a逻辑与a & b逻辑或a | b高低C语言中, 任意非零值为逻辑值真; 零为逻辑值假。 第十二页,共三十三页。8/23/202212重庆理工大学 计算机学院 基础教研室逻辑表达式 !(5 10)&(8 10)|(8 10)的值为1。逻辑表达式(5 =60 ? P : F如果x大于或等于60,则y被赋值P,该表达式的值为P;如果x小于60,则y被赋值F,该表达式的值为F。第十五页,共三十三页。8/23/202215重庆理工大学 计算机学院 基础教研室C语言提供两种选择控制语句:if 语句switch 语句。 4.3 选择结构
7、的程序设计所有程序的正常执行次序通常都是顺序的。然而,在许多问题的解决方案中,常会根据情况的不同,采取不同的处理方式。 第十六页,共三十三页。8/23/202216重庆理工大学 计算机学院 基础教研室 if(表达式) 语句A else 语句B 4.3.1 if语句 if语句的一般形式: 表达式?语句A语句B真(非0)假(0)第十七页,共三十三页。8/23/202217重庆理工大学 计算机学院 基础教研室else子句,是可选的。当无else子句时的if语句形式为: if(表达式) 语句表达式?语句真(非0)假(0)第十八页,共三十三页。8/23/202218重庆理工大学 计算机学院 基础教研室当
8、if语句的目标块中又出现if语句时,C语言有如下规定:else子句总与距它最近的if配套。例如:if (k) if (h) do1();if (i) do2(); /* 这个if */ else do3(); /* 和这个else 组合 */if (t) do4(); else do5();/* 这个 else 和 if(k) 组合 */第十九页,共三十三页。8/23/202219重庆理工大学 计算机学院 基础教研室基于上述规则,一个常用的嵌套if语言构成多分支选择结构,也称为if-else-if阶梯,其 一般形式如下: if(表达式1)语句1;else if(表达式2)语句2;else if
9、(表达式3)语句3;.else 语句n;第二十页,共三十三页。8/23/202220重庆理工大学 计算机学院 基础教研室C语言中,switch语句同样可以实现多分支选择。switch语句的一般形式是: 4.3.1 switch 语句 switch(表达式) case 常量1 : 语句序列1 break; case 常量2 : 语句序列2 break; case 常量3 : 语句序列3 break; . default : 语句序列n可选 可选 第二十一页,共三十三页。8/23/202221重庆理工大学 计算机学院 基础教研室switch语句可以作为另一个switch语句中语句序列的一部份,形成
10、嵌套switch语句。这时,即使内外层的常量相同,也不会引起冲突。例如:switch (x) case 1 : printf(“process(x , y)n”); switch (y) case 0 : printf(“Divided by 0 error!n”); break;case 1 : process (x , y ); break; case 2 : 第二十二页,共三十三页。8/23/202222重庆理工大学 计算机学院 基础教研室例4.1从键盘读入两个整数,然后显示这两个数的商。4.3 选择结构的程序设计举例 #include void main()int a, b;print
11、f(Enter two numbers(separate by ,):);scanf(%d,%d,&a,&b);if (b) printf(a/b=%dn, a/b); elseprintf(Can not divide by zero.n); 第二十三页,共三十三页。8/23/202223重庆理工大学 计算机学院 基础教研室例4.2从键盘读入年份,然后判断该年是否为闰年。符合下列条件之一的年份都是闰年:能被400 整除的年份;不能被100整除,但可以被4整除的年份。第二十四页,共三十三页。8/23/202224重庆理工大学 计算机学院 基础教研室#include void main()int
12、 year,leap;printf(Enter year:);scanf(%d,&year); /*判断是不是闰年*/if (year%400=0 | (year%4=0 & year%100!=0) leap=1;/* 是闰年*/ else leap=0;if (leap)printf(%d is a leap year.n,year);elseprintf(%d is not a leap year.n,year); 第二十五页,共三十三页。8/23/202225重庆理工大学 计算机学院 基础教研室例4.3企业发放的奖金根据利润提成。利润(I)不超过10万元时,奖金可提10%;利润不超过2
13、0万元时,其中的10万元按10%提成,高于10万元的部分提成7.5%;20万到40万元,其中的20万元按前述b方法提成,高于20万元的部分提成5%;40万到60万元,其中的40万元按前述c方法提成,高于40万元的部分提成3%;60万到100万元,其中的60万元按前述d方法提成, 高于60万元的部分提成1.5%;高于100万元时,其中的100万元按前述e方法提成,超过100万元的部分提成1%。从键盘输入当月利润I,求应发放奖金总数? 第二十六页,共三十三页。8/23/202226重庆理工大学 计算机学院 基础教研室#include void main()long int i;int bonus1
14、,bonus2,bonus4,bonus6,bonus10,bonus;printf(Enter profit earned:);scanf(%ld,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.075;bonus4=bonus2+200000*0.05;bonus6=bonus4+200000*0.03;bonus10=bonus6+400000*0.015;第二十七页,共三十三页。8/23/202227重庆理工大学 计算机学院 基础教研室if (i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+
15、(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%dn,bonus); 第二十八页,共三十三页。8/23/202228重庆理工大学 计算机学院 基础教研室例4.4输入某年某月某日,判断这一天是这一年的第几天?解析:以2000年4月8日为例
16、,应该先把前三个月的天数加起来,然后再加上8天即本年的第几天。遇闰年情况,且输入月份大于3时需要多加一天。第二十九页,共三十三页。8/23/202229重庆理工大学 计算机学院 基础教研室#include void main()int day,month,year,sum,leap;printf(nplease input year,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month) /*先计算某月以前月份的总天数*/case 1:sum=0;break; case 2:sum=31;break;case 3:sum=59;b
17、reak;case 4:sum=90;break;case 5:sum=120;break; case 6:sum=151;break;case 7:sum=181;break; case 8:sum=212;break;case 9:sum=243;break; case 10:sum=273;break;case 11:sum=304;break; case 12:sum=334;break;default:printf(month data error);/*二月按28天计*/第三十页,共三十三页。8/23/202230重庆理工大学 计算机学院 基础教研室sum=sum+day;/*再加
18、上某天的天数*/if(year%400=0|(year%4=0 & year%100!=0) /*判断是不是闰年*/leap=1;elseleap=0; /*如果是闰年且月份大于2,总天数应该再加一天*/if(leap=1 & month2)sum+;printf(It is the %dth day of the year.n,sum); 第三十一页,共三十三页。8/23/202231重庆理工大学 计算机学院 基础教研室第四章小结C语句可分为控制语句、表达式语句及复合语句。C语言中,逻辑真值为1;逻辑假值为0。C语言中,将非零值判定为逻辑真;将零值判断为逻辑假。关系、逻辑、条件运算符的优先级及结合性,其表达式的意义及应用。 if 语句用于实现单路、两路和多路分支。switch也是多选一的分支语句,它是if 语句的一个补充(else if 结构),当用它编制程序时会增加可读性。使用if语句及switch语句进行选择结构程序设计。 第三十二页,共三十三页。8/23/202232重庆理工大学 计算机学院 基础教研室内容总结4。continue(结束本次循环
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力板安装合同协议书
- 数据库与网络的关系探讨试题及答案
- 网络科技发展的热点与冷门分析试题及答案
- 餐馆学徒合同协议书范本
- 公路工程执照考试回顾与试题及答案钻研
- 工程转包简单合同协议书
- 行政组织理论的多渠道试题及答案探索
- 出让土地合同变更协议书
- 2025办公室租赁合同标准范本
- 家具批发合同协议书范本
- 学校国际化发展与交流计划
- 四年级下册数学口算练习题
- 安徽省2024年普通高校招生普通本科批院校投档分数及名次(物理科目组合)
- 第二讲中国经济行稳致远-2025年春季学期 形势与政策课件
- 二级建造师继续教育题库(带答案)
- 通信四网合一施工方案
- LY/T 2071-2024人造板类产品生产综合能耗
- 2025年全球及中国环模式RDF制粒机行业头部企业市场占有率及排名调研报告
- 市场监管投诉举报培训
- 《新能源乘用车二手车鉴定评估技术规范 第1部分:纯电动》
- 课题申报参考:西藏地方与祖国关系史融入当地高校“中华民族共同体概论”课教学研究
评论
0/150
提交评论