四章语句与程序控制结构.ppt
《四章语句与程序控制结构.ppt》由会员分享,可在线阅读,更多相关《四章语句与程序控制结构.ppt(104页珍藏版)》请在三一文库上搜索。
1、1,第四章 语句与程序控制结构,4.1 语句总述 4.2 顺序结构 4.3 选择结构 4.4 循环结构 4.5 程序举例,2,4.2 顺序结构程序举例 3,4,6 例1:输入三角形的三边长,求三角形的面积。 公式: #include ”math.h” main( ) float a, b, c, area, s; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, ,3,例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。 main( ) int num; char c1, c2, c3; printf(”Enter a data(10099
2、9):”); scanf(”%d”, ,4,例3:定期存款一年期利率2.3%,三年期年利率 3.2%,今有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息? (按一年期再存时本息一并存) 设:d为本金,p为利率 一年期利息公式: 第一年本息:d+dp= d(1+p) 第一年本息:d(1+p)+ d(1+p)p= d(1+p)2 三年利息:d(1+p)3d 三年期利息公式:dp3,5,源程序: #include “math.h“ #define P1 2.3/100 #define P3 3.2/100 main( ) float x1, x3, d; scanf(“%f“, ,6,4
3、. 3.1 if 语句 (分支控制语句) 1. if 语句的 三种形式 单路分支:条件成立执行操作,不成立什么也不做; 双路分支:条件成立执行A操作,不成立执行B操作; 嵌套分支:条件成立执行A操作,不成立时还需要进 一步进行分支判断。,4.3 选择结构,7,第一种形式单路分支 if (表达式) 语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。 可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。,8,执行流程: 首先求解表达式,并对其值进行逻辑判断;非 零视为真,执行内嵌语句,之后执行后续语句。 若分支条件不成立,则直接执行后续语句。 对应算
4、法:,P,T F 内嵌 语句,9,例:输入一个整数,为正则输出 main( ) int x; scanf(”%d”, ,10,第二种形式双路分支 if (表达式) 语句1 else 语句2 其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作; 执行流程: 首先求解表达式,并对其值进行逻辑判断;为 真,执行内嵌语句1,之后执行后续语句。 若分支条件不成立,则执行内嵌语句2,之后 执行后续语句。,11,对应算法:,P,T F 内嵌 内嵌 语句1 语句2,可分行书写: if (表达式) 语句1 else 语句2,12,例:根据x求y值 y= main( ) float
5、x, y; scanf(”%f”, ,x x0 x2 + 1 x0,13,条件成立与不成立的输出格式、输出项完全一样,因而上例可化简如下: main( ) float x, y; scanf(”%f”, ,14,例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。 #include math.h” main( ) float a, b, c, s, area; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, ,15,第三种形式阶梯if (不成立时嵌套分支) if ( e1 ) s1 else if ( e2 ) s2 else if ( e
6、3 ) s3 else if ( em ) sm else sn 其中:ei各层的分支条件;si各层的内嵌语句; 执行流程:首先计算并判断e1的值,为真执行s1, 之后退出分支。e1为假则计算并判断e2的值,为真 执行s2, 之后退出分支。依次类推。,e1,e2,T F T F T F s1 s2 s3 s4,e3,16,例:对学生成绩分档; main( ) int g; printf(”Enter score:”); scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,17,注意:分支条件的正确性 main( ) int g; printf(”E
7、nter score:”); scanf(”%d”, 57 65 89 D C C,18,上例:用单路分支实现 main( ) int g; printf(”Enter score:”); scanf(”%d”, 多个并列if语句,执行效率不如阶梯 if。,80100分 A档 7079分 B档 6069分 C档 059分 D档,19,2. if 的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。 例:分支条件不成立时需要进一步分支 算法表示: 算法实现: if (e1) s1 else if (e2) s2 else s3,e1,e2,T F T F s1 s2
8、 s3,20,例:分支条件成立与不成立,均要进一步分支 算法表示: 算法实现:,e1 e2 e3,T F T F T F s1 s2 s3 s4,if (e1) if (e2) s1 else s2 else if (e3) s3 else s4,21,例:分支条件不成立时需要若干层进一步的分支 算法表示: 算法实现:,e1,e2,e3,T F T F T F s1 s2 s3 s4,if (e1) s1 else if (e2) s2 else if (e3) s3 else s4,可见:阶梯if是条件不成立时的嵌套结构,22,例:编程,判定某年是否闰年 闰年条件:整百的年份能被400整除;
9、 或非整百的年份能被4整除。 算法表示:,输入year year%100= =0,year%400= =0,year%4= =0,T F T F leap=1 leap=0 leap=1 leap=0,leap= =1,T F,T F,输出“is” 输出“not”,23,程序清单: main( ) int year, leap; scanf(”%d”, ,24,例:根据 x求y值。,3x - 11 (0 x 10) y= 2x + 5 (10 x 20) x (20 x 30),x0&x30 T F,x10 T F,x20 T F,y=x,y= 3x-11,y= 2x+5,输 出 x 无 效,
10、输出 y,输入x,输出X无效,3x-11y,x0&x30,x10,x20,2x+5y,xy,输出y,F,F,F,T,T,T,25,程序清单: main( ) float x, y; printf(”Enter x:”); scanf(”%f”, ,26,方法2:,3x - 11 ( 0 x 10) y= 2x + 5 (10 x 20) x (20 x 30),x=30 T F,输 出 x 无 效,x10 T F,y= 3x-11,y= 2x+5,y=x,x20 T F,输出 y,输入 x,scanf(“%f“, ,27,if语句嵌套的注意事项: 1) 采用缩进格式,可清晰地表示出嵌套层次关系
11、; 2) C编译系统确定if和else的配对原则是: 从最内层else开始识别,将内层else与上面最近 的未曾配对的if配对; 例: 算法实现: if (e1) if (e1) if (e2) s1 if (e2) s1 else s2 else s2,e1 e2,T F T F s1 s2,28,if语句 示例,【例一】以下程序的作用是什么? main( ) char c; printf(“Input :”); scanf(“%c”, ,/*将小写字母转换为大写字母*/,29,if语句 示例,【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (x
12、y) if (y0) z=0; else z+=1; printf(“%dn”,z); ,/*结果是2*/,哦,原来是因为else 总是与靠近它的if配套,常见错误: if (x0) ; if (x=2) if (10”); y=x-1;,30,4.3.2 switch多分支选择 语句 (多路开关语句) 1. switch的一般形式 switch (表达式) case 常量1: s1 case 常量2: s2 case 常量n: sn default : sn+1 其中:表达式可是任何形式,但其值应为整型; 内嵌语句si可是一条语句、复合或空语句; 常量i可是整、字符、符号常量、常量表达式。,
13、31,2. switch的执行流程 首先求解表达式,然后测试其值与哪个case后 的常量相等,相等则从该case后的语句开始执行, 直到其后的所有内嵌语句执行完毕,退出多分支结 构。 若表达式的值不与任何常量相等,则执行default 后的语句,执行完毕退出分支。,32,switch执行流程图: switch (表达式) case c1: s1 case c2: s2 case cn: sn default : sn+1 ,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,Y,Y,Y,N,N,N,33,求解表达式,c1?,c2?,cn?,sn+1,s1,sn,s2,3. 使用说明
14、 1) 在switch中可以使用break语句跳出switch结构;,break,break,break,34,例:对成绩分档 main( ) char c1; int g; scanf(”%d”, ,80100分 A档 7079分 B档 6069分 C档 059分 D档,break; break; break; break; break;,35,2) case后的各常量不能相同,否则编译无法通过; 3) default为可选项,它提供了表达式的值与任何量 都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字 default; 4) 多个case可共用一组执行语句
15、; 例: switch( g/10 ) case 10: case 9: case 8: c1=A ; break; case 7: c1=B ; break; ,36,例:设计一个简单的菜单选择程序,根据选择可实 现a与b的四则运算。 #include “stdio.h” main( ) int a, b; char c1; clrscr( ); printf(”1. Addn”); printf(”2. Subtractn”); printf(”3. Multiplyn”); printf(”4. Dividen”); printf(”Enter your choice:”); c1=ge
16、tchar( ); ,37,c1=getchar( ); if (c1=1 /*main*/,YS,38,switch语句 示例,main() char s; scanf(“%c”, ,输入“c”,求输出结果。,结果: 6069 60 错误输入,?!,39,switch语句 示例,解决方法break语句: main() char s; scanf(“%c”, ,这才差不多!,break!,运行结果: 6069,40,switch语句 示例,解决方法break语句: main() char s; scanf(“%c”, ,讨论 switch(s)语句中的s实际上并非真正的条件选择,而只是一种跳转
17、指示(与if语句不同),表示下面应该跳转到什么位置继续执行。而各case实际上只是一个跳转处的标记。当程序跳转到某个case处时,并非只执行此case行的程序组,而是从此处开始一直向下执行各条语句,直到整个switch开关体结束(“”)。 如果要使每个case处相当于一种if(s)else的效果,必须在其语句组最后加上break语句。,41,switch语句 示例,main() int x=1,y=0,a=0,b=0; switch(x) case 1 : switch(y) case 0 : a+;break; case 1 : b+;break; case 2 : a+;b+;break;
18、 case 3 : a+;b+; printf(“a=%d,b=%dn”,a,b); ,说明 1、每个case常量表达式的值必须互不相同,否则会出现互相矛盾的结果。 2、允许多个case共用一个执行语句。,求程序运行结果。,结果:a=2,b=1。,如果x=2?,结果:a=1,b=1,如果x=3?,结果:a=1,b=1,42,4.3.3 程序举例 例:从键盘输入四个整数,输出其中的最大数。 main( ) int a, b, c, d, max; printf(”Enter a, b, c, d:”); scanf(”%d,%d,%d,%d”, ,43,例:找出三个整数中的最大、最小数。 mai
19、n( ) int a, b, c, max, min; printf(”Enter a, b, c:”); scanf(”%d,%d,%d”, ,44,例:输入三个整数,由大到小输出。 main( ) int a, b, c; scanf(“%d,%d,%d”, ,输入abc,ab?,ab,bc?,ac?,ac,bc,N,N,N,Y,Y,Y,45,例:输入一个不多于5位的正整数 要求:1. 输出它是几位; 2. 输出该数; 3. 逆序、空格分隔输出各位数字; 如输入:123,输出:3 2 1,输入a 求a的位数 分离a的各位数字 输出a、位数、逆序数字,46,main( ) long a; i
20、nt w, p5,p4,p3,p2,p1; /*p5高位*/ printf(”Enter a(1-99999):”); scanf(”%ld”, ,47,p2=(a-p5*10000L-p4*1000-p3*100)/10; p1=a-p5*10000L-p4*1000-p3*100-p2*10; printf(“t%ld,%dntt”, a, w); switch( w ) case 5: printf(”%dbbb”, p5); /*无须break*/ case 4: printf(”%dbbb”, p4); case 3: printf(”%dbbb”, p3); case 2: pri
21、ntf(”%dbbb”, p2); case 1: printf(”%dbbb”, p1); printf(“n”); ,YS,48,另一种输出方法: switch( w ) case 5: printf(”%d %d %d %d %d”, p1, p2, p3, p4, p5); break; case 4: printf(”%d %d %d %d”, p1, p2, p3, p4); break; case 3: printf(”%d %d %d”, p1, p2, p3); break; case 2: printf(”%d %d”, p1, p2); break; case 1: pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语句 程序控制 结构
链接地址:https://www.31doc.com/p-3196546.html