版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章重点:本章重点:ifif语句;语句;ifelseifelse语句;语句;switchswitch语句。语句。本章难点:本章难点:选择结构的嵌套。选择结构的嵌套。5.1 为什么需要选择结构为什么需要选择结构5.2 关系运算符和关系表达式关系运算符和关系表达式5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.4 用用if语句实现选择结构语句实现选择结构5.5 用用switch语句实现选择结构语句实现选择结构5.6 选择结构的嵌套选择结构的嵌套5.7 选择结构程序设计综合举例选择结构程序设计综合举例5.8 本章小结本章小结在前面介绍的顺序结构中,程序中的每条语句是按照各个语句的先后顺序依次
2、执行的,执行完一条语句后再无条件地执行下一条语句,这就是顺序结构。但在现实生活中,有许多问题用顺序结构是无法解决的,需要用到选择结构。也就是说执行完一条语句后不是无条件地执行下一条语句,而是需要进行选择,要选择就需要条件的判断。现实生活中很多问题都需要进行条件的判断5.1 5.1 为什么需要选择结构为什么需要选择结构在C语言中有6种关系运算符:小于:;小于或等于:;大于或等于: =;等于:=;不等于:!=。C语言中的关系运算符都是双元运算符号(需要两个操作数),操作数可以是数值型数据和字符型数据。如果关系成立,则关系运算的值为1(表示逻辑真);如果关系不成立,则关系运算的值为0(表示逻辑假)。
3、5.2.1 关系运算符关系运算符5.2 5.2 关系运算符和关系表达式关系运算符和关系表达式5.2 关系运算符和关系表达式关系运算符和关系表达式5.2.1 关系运算符关系运算符算术运算符 高、=、!=赋值运算符号 低图5.1 关系运算符的优先级5.2.2 关系表达式关系表达式用关系运算符把两个表达式连接起来的式子称为关系表达式。例如:ab+2,a+bc+d,AB,c=5d=3,(ab)(cd)关系表达式的值也是一个逻辑值,即“真”和“假”。由于在C语言中没有逻辑型数据,所以用“1”代表“真”,用“0”代表“假”。例子:例子:#includeint main()double score;scan
4、f(%lf,&score);if(score=60) printf(OKn);else printf(Failedn); return 0;/*86OK*/*59Failed*/1. 逻辑非逻辑非是一元运算,其运算符为“!”。运算规则:若逻辑非运算符后面的操作数的值为0(逻辑假),则逻辑非的运算结果为1(逻辑真);若逻辑非运算符后面的操作数的值为1(逻辑真),则逻辑非的运算结果为0(逻辑假)。在C语言中进行逻辑判断时,数据的值为非0,则认为是逻辑真;数据的值为0,则认为是逻辑假。例如:int a=1,b=5;!b 运算结果为0,因为b是非0值表示逻辑真,再进行逻辑非运算后结果为0;!(ab)
5、运算结果为1,因为ab的运算结果是逻辑假,再进行逻辑非运算后结果为真。5.3 5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式2. 逻辑与逻辑与是二元运算,其运算符为“&”。运算规则:若参与逻辑与运算的两个操作数的值均为1(逻辑真),则逻辑与的运算结果为1(逻辑真);若参与逻辑与运算的两个操作数的值中有一个为0(逻辑假),则逻辑与的运算结果为0(逻辑假)。例如:int a=1,b=5;a&b 运算结果为1,因为a和b的值均为逻辑真;(ab)&(a0) 运算结果为0,因为ab的运算结果是逻辑假。5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑
6、表达式3. 逻辑或逻辑或是二元运算,其运算符为“|”。运算规则:若参与逻辑与运算的两个操作数的值均为0(逻辑假),则逻辑与的运算结果为0(逻辑假);若参与逻辑与运算的两个操作数的值中有一个为1(逻辑真),则逻辑与的运算结果为1(逻辑真)。例如:int a=1,b=5;a|b 运算结果为1,因为a的值为逻辑真;(ab)|(a0) 运算结果为1,因为a0的运算结果是逻辑真。5.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式ab!a!ba&ba|b真真假假真真真假假真假真假假真真假假假真真假假真表5.1 逻辑运算的真值表5.3.2 逻辑表达式逻辑表达式用逻辑运算符把两个表达式连接起来的式子称为逻辑
7、表达式。例如:!(ab)&c,(ac),(ac)|(bc),!(ab)&b逻辑表达式的值也是一个逻辑值,即“真”和“假”。C语言中逻辑运算符的优先级为:逻辑非(!)逻辑与(&)逻辑或(|)。 5.3.2 逻辑表达式逻辑表达式“!” 高算术运算关系运算“&”和“|”赋值运算 低图5.2 运算符的优先级5.4.1 单分支单分支if语句语句单分支if语句的形式为:if (表达式) 语句单分支if语句首先判断表达式的值,如果表达式的值为真,则执行后面的语句;如果表达式的值为假,则不执行后面的语句。这里的语句可以是一条简单的语句,也可以是一条复合语句。 表 达式语句0(假)非0(真)5.4 5.4 用用
8、ifif语句实现选择结构语句实现选择结构5.4.1 单分支单分支if语句语句例题5.1 输入一个整数,判断这个数是否是偶数。解题思路: 首先定义一个内存变量x存储整数,然后使用表达式(x%2=0)判断是否是偶数。程序:#include int main()int x;scanf(%d,&x);if(x%2=0)printf(%d是一个偶数。n,x);程序运行结果:1818是一个偶数。5.4.1 单分支单分支if语句语句5.4.2 双分支双分支if语句语句双分支if语句的形式为:if (表达式) 语句1else 语句2双分支if语句首先判断表达式的值,如果表达式的值为真,则执行语句1;如果表达式
9、的值为假,则执行语句2。 5.4.2 双分支双分支if语句语句0(假)表达式语句2非0(真)语句1例题5.2 输入一个整数,判断这个数是奇数还是偶数。解题思路: 首先定义一个内存变量x存储整数,然后使用表达式(x%2=0)判断是奇数还是偶数。如果表达式的值为1,则这个数是偶数,否则这个数就是奇数。5.4.2 双分支双分支if语句语句5.4.2 双分支双分支if语句语句程序:#include int main()int x;scanf(%d,&x);if(x%2=0)printf(%d是一个偶数。n,x);elseprintf(%d是一个奇数。n,x);程序运行结果:55是一个奇数。例子:例子:
10、#includeint main()int i,m,n,res;for(i=1;i=5;i+)scanf(%d%d,&m,&n);res=m%n;printf(res=%dnn,res); return 0;/*4 5res=45 4res=19 5res=411 -3res=2-11 3res=-2*/模运算的例子5.4.3 多分支多分支if 语句语句 多分支if 语句的形式为:if (表达式1) 语句1else if (表达式2)语句2 else if (表达式3) 语句3 else if (表达式n) 语句n 5.4.3 多分支多分支if 语句语句 多分支if语句首先判断表达式1的值,如
11、果表达式的值为真,则执行语句1,后面的语句再不执行;如果表达式的值为假,则再判断表达式2的值。如果表达式2的值为真,则执行语句2,后面的语句再不执行;如果表达式2的值为假,则继续判断表达式3的值。以此类推找到成立的条件然后执行对应的语句。 非0(真)非0(真)表达式1表达式2表达式3表达式4语句1语句2语句3语句4语句50(假)0(假)0(假)0(假)非0(真)非0(真)5.4.3 多分支多分支if 语句语句 例子:例子:95A88B73C66D35E#includeint main()double score;scanf(%lf,&score);if(score=90) printf(An)
12、;else if(score=80) printf(Bn);else if(score=70) printf(Cn);else if(score=60) printf(Dn);else printf(En); return 0;多分支条件语句多分支条件语句例题5.3 计算分段函数的值。1021002010/210*2xxxxxxxxy解题思路: 首先定义一个内存变量x,输入x的值后判断x的范围,然后根据分段函数计算函数值。5.4.3 多分支多分支if 语句语句 程序:#include int main()float x,y;printf(请输入x的值:);scanf(%f,&x);if(x-1
13、0&x0&x10)y=2-x;printf(y=%fn,y);5.4.3 多分支多分支if 语句语句 程序运行结果:请输入x的值:8y=10.000000switch语句的一般形式为:switch(表达式)case 常量表达式1:语句1case 常量表达式2:语句2case 常量表达式3:语句3case 常量表达式n:语句ndefault:语句n+15.5 5.5 用用switchswitch语句实现选择结构语句实现选择结构5.5 用用switch语句实现选择结构语句实现选择结构说明:1. switch语句是多分支选择语句,其特点是可以根据一个表达式的多种值,选择多个分支。虽然也可以用多分支的
14、if语句或嵌套的if语句实现,但如果分支较多,则会导致多分支if语句和嵌套的if语句层次多,程序冗长且可读性降低。2. switch后面的表达式的值可以是整型、字符型、枚举型等。常量表达式的值必须互不相同,当表达式的值与某一个case后面的常量表达式的值相同时,就执行该case后面的语句。如果没有任何一个case后面的常量表达式的值与其相匹配时,则执行default后面的语句。3. 在执行switch语句时,根据表达式的值找到入口,也即对应的case,执行完成对应的语句后,程序继续执行下一个case,而不再继续判断。4. 执行完一个case以后,如果要终止switch语句的执行,可以用brea
15、k语句来实现。5.5 用用switch语句实现选择结构语句实现选择结构例题5.4输入考试成绩(百分制)打印出其对应的等级。小于60:不及格 大于等于60,且小于70 : 及格 大于等于70,且小于80 : 中等大于等于80,且小于90 : 良好 大于等于90,且小于等于100:优秀解题思路:首先要设计好switch后面的表达式,因为考试成绩为0-100的实数,如果把每一个值都用一个case列出来,那是不可能实现的。所以可以把0-100的实数划分成060、6070、7080、8090、90100、100进行处理。5.5 用用switch语句实现选择结构语句实现选择结构程序:#include in
16、t main()float score;printf(请输入学生成绩:);scanf(%f,&score);switch(int)(score/10)case 10:case 9:printf(优秀n);break; case 8:printf(良好n);break;case 7:printf(中等n);break;case 6:printf(及格n);break;case 5:case 4: case 3:case 2:case 1:case 0:printf(不及格n);break;default:printf(输入有误!n);程序运行结果:请输入学生成绩:78中等例子:例子:#inclu
17、deint main()double score; int k;scanf(%lf,&score);k=score/10;switch(k) case 10:case 9: printf(An); break;case 8: printf(Bn); break;case 7: printf(Cn); break;case 6: printf(Dn);break;default: printf(En);break; return 0;多分支语句选择结构中又包含一个或多个选择结构,称为选择结构的嵌套。一般形式为:if(表达式1) if(表达式2) 语句1 else 语句2else if(表达式3)
18、 语句3 else 语句4有些时候可能不是if(表达式1)和else后同时又有if语句结构,可能只在if(表达式1)或else后才有if语句结构,这种情况仍然是选择结构的嵌套。甚至有些时候if(表达式1)后面的if(表达式2)中又还有选择结构。5.6 5.6 选择结构的嵌套选择结构的嵌套5.6 选择结构的嵌套选择结构的嵌套例题5.5 输入3个整数a,b,c,输出3个整数中最大的数。解题思路:要找出3个数中最大的数,首先要找出a和b两个数中的较大的数,然后再把前面两个数中较大的数跟第3个数比较,从而找出最大的数。5.6 选择结构的嵌套选择结构的嵌套程序:#include int main()in
19、t a,b,c;printf(请输入3个整数:);scanf(%d,%d,%d,&a,&b,&c);if(ab)if(bc)printf(3个整数中的最大数是:%dn,c);elseprintf(3个整数中的最大数是:%dn,b);else if(ac)printf(3个整数中的最大数是:%dn,c);elseprintf(3个整数中的最大数是:%dn,a);程序运行结果:请输入3个整数:89,45,1203个整数中的最大数是:120例题5.6 输入一个年份,如果判断这个年份是否是闰年。解题思路:定义一个内存变量year存储年份,根据前面介绍的判断闰年的条件:(year%4=0&year%10
20、0!=0)|( year%4=0&year%400=0),然后使用if语句实现。5.7 5.7 选择结构程序设计综合举例选择结构程序设计综合举例5.7 选择结构程序设计综合举例选择结构程序设计综合举例程序:#include int main()int year;printf(请输入一个年份:);scanf(%d,&year);if(year%4=0&year%100!=0)|( year%4=0&year%400=0)printf(%d是闰年。n,year);elseprintf(%d不是闰年。n,year);程序运行结果:请输入一个年份:19921992是闰年。5.7 选择结构程序设计综合举
21、例选择结构程序设计综合举例例题5.7 求一元二次方程ax2+bx+c=0的根。解题思路:求一元二次方程的根,首先要保证二次项系数a不等于0,然后再判断b2-4*a*c的值,如果b2-4*a*c的值大于或等于0,则一元二次方程有实根;如果b2-4*a*c的值小于0,则一元二次方程有两个共轭复数根。5.7 选择结构程序设计综合举例选择结构程序设计综合举例程序:#include #include int main()float a,b,c,x1,x2,rp,ip;printf(请输入一元二次方程的二次项系数、一次项系数和常数项:);scanf(%f,%f,%f,&a,&b,&c);if(a=0)pr
22、intf(不是一元二次方程!n);elseif (b*b-4*a*c0)x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);printf(方程有两个实根:%8.4f,%8.4fn,x1,x2);else5.7 选择结构程序设计综合举例选择结构程序设计综合举例 if (b*b-4*a*c=0)printf(方程有两个相等的实根:%8.4fn,-b/(2*a);elserp=-b/(2*a);ip=sqrt(-(b*b-4*a*c)/(2*a);printf(方程有两个复数根:n);printf(%8.4f+%8.4fin,rp,ip
23、);printf(%8.4f-%8.4fin,rp,ip);程序运行结果:请输入一元二次方程的二次项系数、一次项系数和常数项:2,8,1方程有两个实根:-0.1292,-3.87085.7 选择结构程序设计综合举例选择结构程序设计综合举例例题5.8 输入3个数,然后按照由大到小的顺序输出这3个数。解题思路:这是一种最简单的排序问题。定义3个内存变量a,b,c,要进行排序,首先要a和b比较,如果ab,则内存变量a和b的值要进行交换,然后再a和c比较,如果ac,则内存变量a和c的值要进行交换,最后再b和c比较,如果bc,则内存变量b和c的值要进行交换。通过这样的比较后,内存变量a存储的是最大值,b
24、存储的是较大值,c存储的就是最小值。依次输出就是按由大到小的顺序输出。5.7 选择结构程序设计综合举例选择结构程序设计综合举例程序:#include int main() float a,b,c,t; printf(请输入3个数:); scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%6.2f,%6.2f,%6.2fn,a,b,c);程序运行结果:请输入3个数:8,2,99.00,8.00,2.00 例子:例子:#include int main()int a,b,c; scanf(%d%d%d,&a,&b,&c);if(ab)if(ca) printf(%d %d %dn,c,a,b); el
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷挤压成型工艺技师考试试卷及答案
- 2025年信阳鼎信产业投资集团有限公司及所属二级公司招聘工作人员24名笔试历年参考题库附带答案详解
- 2025山东菏泽市劳信就业服务有限公司招聘派遣制人员24人笔试历年参考题库附带答案详解
- 2025山东德州天衢建设发展集团有限公司招聘20人笔试历年参考题库附带答案详解
- 2025安徽润含林业发展有限公司招聘劳务派遣人员4人笔试历年参考题库附带答案详解
- 2025天津市河北区供热燃气有限公司招聘4人笔试历年参考题库附带答案详解
- 2025四川虹信软件股份有限公司招聘营销数字化顾问等岗位15人笔试历年参考题库附带答案详解
- 2025四川成都市简州新城投资集团有限公司专业技术人才招聘23人笔试历年参考题库附带答案详解
- 2025内蒙古鄂尔多斯电力冶金集团股份有限公司招聘102人笔试历年参考题库附带答案详解
- 2025中煤北京煤矿机械有限责任公司校园招聘5人笔试历年参考题库附带答案详解
- 2026年上海市黄浦区初三语文二模试卷及答案
- 航天军工行业从海外看中国商发产业链前景
- 2026公司级新员工安全培训教材
- 2026年各地算力统筹与算电协同精细化政策汇编解读
- 配电架空线路标准施工工艺课件
- 医疗器械网络经营培训
- (完整版)钢结构厂房施工组织设计(含土建)
- 最高人民法院实施民法典继续有效适用的司法解释文件汇编(下)
- 2023年广西二造《建设工程计量与计价实务(安装)》高频核心题库300题(含解析)
- GB/T 36501-2018土壤制图1∶25 000 1∶50 000 1∶100 000中国土壤图用色和图例规范
- 套管强度校核全解课件
评论
0/150
提交评论