




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 选择结构程序设计提 纲选择结构程序设计表示条件选择结构If语句单边选择结构双边选择结构多边选择结构If语句嵌套Switch语句注释的使用良好的源程序书写风格下次上机实验安排选择结构程序设计 要设计选择结构程序,要考虑两个方面的问题:一是在C语言中如何来表示条件,二是在C语言中实现选择结构用什么语句。 在C语言中表示条件,一般用关系表达式或逻辑表达式,实现选择结构用if语句或switch语句。if语句if语句的一般格式 if (表达式) 语句组1; else 语句组2; 注意:(1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句(可选)是if语句的一部分,必须与if
2、配对使用,不能单独使用。(3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。if语句单边选择结构(缺省else子句时) if (表达式) 语句;或:if (表达式) 语句1; 语句n; if语句单边选择结构【示例-1】: 求|x| main() double x; scanf(“%f”,&x); if (xb) max=a; else max=b; printf(“max=%f”,max);if语句双边选择结构示例-3 输入任意三个整数num1、num2、num3,求三个数中的最大值。main() int num1,num2,num3,max; pr
3、intf(Please input three numbers:); scanf(%d,%d,%d,&num1,&num2,&num3); if (num1num2) max=num1; else max=num2; if (num3max) max=num3; printf(The three numbers are:%d,%d,%dn, num1,num2,num3); printf(max=%dn,max); if语句双边选择结构示例-3 思考:本案例中的第1个if语句,可不可以优化为不带else子句的形式?if语句双边选择结构示例-3 思考:本案例中的第1个if语句,可不可以优化为不带
4、else子句的形式? max=num1; if(num2max) max=num2; 这种优化形式的基本思想是:首先取一个数预置为max(最大值),然后再用max依次与其余的数逐个比较,如果发现有比max大的,就用它给max重新赋值,比较完所有的数后,max中的数就是最大值。这种方法,对从3个或3个以上的数中找最大值的处理,非常有效。if语句双边选择结构多边选择结构(复合if语句) if (表达式1) 语句组1; else if (表达式2) 语句组2; else if (表达式m) 语句组m; else 语句组n; if语句多边选择结构 if语句多边选择结构if语句多边选择结构示例-4 y=
5、sign(x)=1 x0 0 x=0 -1 x0#include main() double x; int y; scanf(“%f ”,&x); if (x0) y=1; else if (x=0) y=0; else y=-1; printf(“sign(x)=%d”,y);if语句允许嵌套。所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。 if (表达式) if (表达式) 语句1; else 语句2; else if (表达式) 语句1; else 语句2; if语句嵌套与嵌套匹配原则示例-5 求sign(x) #include main()dou
6、ble x; int y; scanf(“%f ”,&x); if (x=0) if (x0) y=1; else y=0; else y=-1; printf(“sign(x)=%d”,y);if语句嵌套与嵌套匹配原则 if语句嵌套时,else子句与if的匹配原则:(1)与在它上面、距它最近、且尚未匹配的if配对。(2) 为明确匹配关系,避免匹配错误,强烈建议:将内嵌的if语句,一律用花括号括起来。if语句嵌套与嵌套匹配原则 思考:求sign(x),以下哪段程序是正确的?(1)if (x=0) if (x0) y=1; else y=0; else y=-1;(2)y=-1; if (x!=
7、0) if (x0) y=1; else y=0;(3)y=0; if (x=0) if (x0) y=1; else y=-1;if语句嵌套与嵌套匹配原则 利用逻辑运算能描述复杂条件的特点,可用其来表示较复杂的条件表达式。示例-6 输入一个年份,判断其是不是闰年。main()int year; printf(Please input the year:); scanf(%d,&year);if(year%4=0&year%100!=0)|(year%400=0) printf(%d is a leap year.n,year); else printf(%d is not a leap ye
8、ar.n,year);if语句复杂条件表达式 (1)if后面的“表达式”,除常见的关系表达式或逻辑表达式外,也允许是其它类型的数据,如整型、实型、字符型等。 (2)if语句允许嵌套,但嵌套的层数不宜太多。在实际编程时,应适当控制嵌套层数(23层)。 (3)“语句组1”和“语句组2”,可以只包含一个简单语句,也可以是复合语句。if语句其他说明 务必牢记:不管是简单语句,还是复合语句中的各个语句,每个语句后面的分号必不可少! 例如: if (num1num2) max=num1; else max=num2; if行后面的赋值语句“max=num1;”分号不能省略。但不要误认为if和else是2个
9、独立的语句,它们都属于if语句中的一部分,else是if语句的子句。if语句其他说明 条件运算符与if语句 max = (ab ? a : b) if ( ab ) max=a; else max=b; if语句其他说明C语言提供了switch语句直接处理多分支选择。switch语句的一般形式:switch(表达式) case 常量表达式1:语句组;break; case 常量表达式2:语句组;break; . case 常量表达式:语句组;break; default:语句组;break; switch语句 (1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时
10、,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。 (2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句的下一条。switch语句示例-7 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。switch语句main()int score, grade;printf(“Input a s
11、core(0100): ”);scanf(“%d”, &score);grade = score/10;switch (grade) 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; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf
12、(“The score is out of range!n”); switch语句 (1)switch后面的“表达式”,可以是int、char和枚举型中的一种。 (2)每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。 (3)case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。switch语句思考:如果去掉示例-7程序中的所有break语句,且输入的成绩为75,输出会如何?switch语句(4)各c
13、ase及default子句的先后次序,不影响程序执行结果。(5)多个case子句,可共用同一语句(组)。 例如,在示例-7中的“case 10: ”和“case 9: ”共用语句“printf(grade=An); break;”,“case 5: ”“case 0: ”共用语句“printf(grade=En); break;”。(6)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。switch语句 必要的注释,可有效地提高程序的可读性,从而提高程序的可维护性。 在语言源程序中,注释可分为三种情况:(1)在函数体内对语句的注释;(2)在函数之前对函数的注释;
14、(3)在源程序文件开始处,对整个程序的总体说明。注释的使用 函数体内的语句,是由顺序结构、选择结构和循环结构等三种基本结构构成的。在什么地方加以注释的原则是:如果不加注释,理解起来就会有困难,或者虽无困难、但浪费时间。 (1)顺序结构在每个顺序程序段(由若干条语句构成)之前,用注释说明其功能。除很复杂的处理外,一般没有必要每条语句都加以注释。注释的使用 (2)选择结构 在C语言中,选择结构是由if语句和switch语句来实现的。一般地说,要在前面说明其作用,在每个分支条件语句行的后面,说明该分支的含义,如下所示: 1)if语句 /*(说明功能)*/ if(条件表达式) /*条件成立时的含义*/ else /*入口条件含义*/ 注释的使用2)switch语句 /*(说明功能) */ switch(表达式) case 常量表达式1: /*该入口值的含义*/ 语句组; case 常量表达式n: /*该入口值的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中历史 第五单元 改革开放与中华民族的伟大复兴 第17课 改革开放的新时代(1)教学教学实录 岳麓版选修1
- 《短视频剪与制作PR》教案全套 舒望
- 智能医疗设备研发与临床应用指南
- 5 小小的船 教学设计-2024-2025学年语文一年级上册(统编版)
- 医疗器械行业质量管理体系建设指南
- 桂枝芍药汤治疗腰腿痛寒湿证效果及VAS评分分析
- 2024年五年级数学上册 一 小数乘法 2小数乘小数 第2课时小数乘小数(二)教学实录 西师大版
- 2024年四年级英语上册 Unit 1 My classroom The fourth period(第四课时)教学实录 人教PEP
- 15《坚持才会有收获》教学设计-2023-2024学年道德与法治二年级下册统编版
- 11《透明与不透明》教学设计2024-2025学年二年级上册科学苏教版
- 《北京市道路桥梁试验检测费用定额》
- 2024工程造价员个人工作计划范文
- 2024至2030年中国毛巾绣电脑绣花机控制系统行业投资前景及策略咨询研究报告
- 企业团餐服务方案
- 2024年重庆市公务员考试《行测》真题及答案解析
- 无人机理论培训
- 安装窗户护栏安全免责协议书范文范本
- 《现代家政导论》电子教案 3.2模块三项目二家庭生活质量认知
- 教师资格考试高中英语面试试题及答案指导(2024年)
- 2025年九省联考新高考 英语试卷(含答案解析)
- 2022-2023学年北京市海淀区七年级上学期期末语文试卷(含答案解析)
评论
0/150
提交评论