四章语句与程序控制结构教案.ppt
《四章语句与程序控制结构教案.ppt》由会员分享,可在线阅读,更多相关《四章语句与程序控制结构教案.ppt(104页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、四章语句与程序控制结构 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望4.2 顺序结构程序举例顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include”math.h”main()floata,b,c,area,s;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(”a=%7.2
2、f,b=%-7.2f,c=%-7.2fn”,a,b,c);printf(”area=%-7.2fn”,area);2例2:将一个三位整数的各位数符分离出来,并转 换为数字字符倒序输出。main()intnum;charc1,c2,c3;printf(”Enteradata(100999):”);scanf(”%d”,&num);c1=num%10+48;/*or:num%10+0*/num=num/10;c2=num%10+48;num=num/10;c3=num+48;printf(”%3c,%3c,%3cn”,c1,c2,c3);3例3:定期存款一年期利率2.3%,三年期年利率3.2%,今
3、有本金1万元,按一年期连续存三年和按三年期存入,各得多少利息?(按一年期再存时本息一并存)设:d为本金,p为利率一年期利息公式:第一年本息:d+dp=d(1+p)第一年本息:d(1+p)+d(1+p)p=d(1+p)2三年利息:d(1+p)3d三年期利息公式:dp34源程序:#includemath.h#defineP12.3/100#defineP33.2/100main()floatx1,x3,d;scanf(%f,&d);x1=d*pow(1+P1,3)-d;/*pow(1+2.3/100,3)*/x3=d*P3*3;/*pow(1+3.2/100,3)*/printf(x1=%-7.2
4、fx2=%-7.2fn,x1,x3);54.3.1 if语句语句 (分支控制语句)1.if 语句的语句的 三种形式三种形式单路分支:单路分支:条件成立执行操作,不成立什么也不做;双路分支:双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:嵌套分支:条件成立执行A操作,不成立时还需要进一步进行分支判断。4.3 选择结构6 第一种形式第一种形式单路分支 if(表达式)语句 内嵌语句;可是一条语句、复 合语句、空语句。描述了条件 成立时要执行的操作。可是任何形式的表达式;通常是关系或 逻辑表达式。描述了分支控制条件。7执行流程:执行流程:首先求解表达式,并对其值进行逻辑判断;非零视为真,执行
5、内嵌语句,之后执行后续语句。若分支条件不成立,则直接执行后续语句。对应算法:对应算法:PTF内嵌语句8例:输入一个整数,为正则输出main()intx;scanf(”%d”,&x);if(x0)printf(”%dn”,x);例:输入两个数并按由小到大顺序输出main()floata,b,t;scanf(”%f,%f”,&a,&b);if(ab)t=a;a=b;b=t;printf(”%f,%fn”,a,b);9第二种形式第二种形式双路分支 if(表达式)语句1else语句2 其中:其中:内嵌语句1是条件成立时所执行的操作;内嵌语句2是条件不成立时所执行的操作;执行流程:执行流程:首先求解表达
6、式,并对其值进行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。若分支条件不成立,则执行内嵌语句2,之后执行后续语句。10对应算法:对应算法:PTF内嵌内嵌语句1语句2可分行书写:if(表达式)语句1else语句211例:根据x求y值y=main()floatx,y;scanf(”%f”,&x);if(x=0)y=x;printf(”y=%fn”,y);elsey=x*x+1.0;printf(”y=%fn”,y);xx0 x2+1x=0)y=x;elsey=x*x+1.0;printf(”y=%fn”,y);13例:求任意三角形面积,若三边值不能构成三角形时输出表示错误的信息。#inclu
7、demath.h”main()floata,b,c,s,area;printf(”Entera,b,c:”);scanf(”%f,%f,%f”,&a,&b,&c);if(a+bc&a+cb&b+ca)s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(”area=%-8.3fn”,area);elseprintf(”DATAERROR!”);14第三种形式第三种形式阶梯if(不成立时嵌套分支)if(e1)s1elseif(e2)s2elseif(e3)s3elseif(em)smelsesn其中:其中:ei各层的分支条件;si各层的内嵌语句;执
8、行流程:执行流程:首先计算并判断e1的值,为真执行s1,之后退出分支。e1为假则计算并判断e2的值,为真执行s2,之后退出分支。依次类推。e1e2TFTFTFs1s2s3s4e315例:对学生成绩分档;main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);elseif(g=80)printf(”A”);elseif(g=70)printf(”B”);elseif(g=60)printf(”C”);elseprintf(”D”);80100分 A档 7079分 B档 6069分 C档 059分
9、D档16注意注意:分支条件的正确性main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);elseif(g=60)printf(”C”);elseif(g=70)printf(”B”);elseif(g=80)printf(”A”);576589DCC17上例:用单路分支实现main()intg;printf(”Enterscore:”);scanf(”%d”,&g);if(g100)printf(”INPUTERROR!”);if(g=80&g=70&g=60&g=0&g=59)printf(
10、”D”);多个并列if语句,执行效率不如阶梯if。80100分 A档 7079分 B档 6069分 C档 059分 D档182.if的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要进一步分支算法表示:算法表示:算法实现:算法实现:if(e1)s1elseif(e2)s2elses3e1e2TFTFs1s2s319例:分支条件成立与不成立,均要进一步分支算法表示:算法表示:算法实现:算法实现:e1e2e3TFTFTFs1s2s3s4if(e1)if(e2)s1elses2elseif(e3)s3elses420例:分支条件不成立时需
11、要若干层进一步的分支算法表示:算法表示:算法实现:算法实现:e1e2e3TFTFTFs1s2s3s4if(e1)s1elseif(e2)s2elseif(e3)s3elses4可见:阶梯if是条件不成立时的嵌套结构21例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除;或非整百的年份能被4整除。算法表示:算法表示:输入yearyear%100=0year%400=0year%4=0T F T Fleap=1 leap=0 leap=1 leap=0 leap=1 T F T F 输出“is”输出“not”22程序清单:main()intyear,leap;scanf(”%d”,&ye
12、ar);if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseif(year%4=0)leap=1;elseleap=0;if(leap=1)printf(”%disaleapyeas.n”,year);elseprintf(”%disnotaleapyear.n”,year);23例:根据x求y值。3x-11(0 x10)y=2x+5(10 x20)x(20 x30)输入 x x0&x30T F x10 T F x20 T F y=x y=3x-11 y=2x+5 输出x无效 输出 y 输入x输出X无效3x-11yx0&x30 x10 x=0&x
13、30)if(x10)y=3*x-11;elseif(x20)y=2*x+5;elsey=x;printf(”x=%7.2f,y=%7.2fn”,x,y);elseprintf(”%7.2fisinvalid.n”,x);25方法2:3x-11(0 x10)y=2x+5(10 x20)x(20 x30)x=30T F 输出 x无效 x10 T F y=3x-11 y=2x+5 y=x x20 T F 输出 y 输入 xscanf(%f,&x);if(x=30)printf();elseif(x10)y=3*x-11;elseif(x=a&c=z)c=c-32;else c=c;printf(“%
14、c”,c);/*将小写字母转换为大写字母*/28if语句 示例【例二】以下程序的执行结果是什么?main()int x=2,y=-1,z=2;if(xy)if(y0);if(x=2)if(1=x0”);y=x-1;294.3.2 switch多分支选择多分支选择 语句语句 (多路开关语句)1.switch的一般形式的一般形式 switch(表达式)case常量1:s1case常量2:s2case常量n:sndefault:sn+1其中:其中:表达式可是任何形式,但其值应为整型;内嵌语句si可是一条语句、复合或空语句;常量i可是整、字符、符号常量、常量表达式。302.switch的执行流程的执行
15、流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。31switch执行流程图:执行流程图:switch(表达式)casec1:s1casec2:s2casecn:sndefault:sn+1求解表达式c1?c2?cn?sn+1s1sns2YYYNNN32求解表达式c1?c2?cn?sn+1s1sns23.使用说明使用说明1)在switch中可以使用break语句跳出switch结构;breakbreakbreak33例:对
16、成绩分档main()charc1;intg;scanf(”%d”,&g);switch(g/10)case10:c1=A;case9:c1=A;case8:c1=A;case7:c1=B;case6:c1=C;default:c1=D;printf(“%cn”,c1);80100分 A档7079分 B档 6069分 C档 059分 D档break;break;break;break;break;342)case后的各常量不能相同,否则编译无法通过;3)default为可选项,它提供了表达式的值与任何量都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字defaul
17、t;4)多个case可共用一组执行语句;例:switch(g/10)case10:case9:case8:c1=A;break;case7:c1=B;break;35例:设计一个简单的菜单选择程序,根据选择可实现a与b的四则运算。#include“stdio.h”main()inta,b;charc1;clrscr();printf(”1.Addn”);printf(”2.Subtractn”);printf(”3.Multiplyn”);printf(”4.Dividen”);printf(”Enteryourchoice:”);c1=getchar();36c1=getchar();if(
18、c1=1&c1=4)printf(”Entera,b:”);scanf(“%d,%d”,&a,&b);switch(c1)case1:printf(“%dn”,a+b);break;case2:printf(“%dn”,a-b);break;case3:printf(“%dn”,a*b);break;case4:printf(“%fn”,(float)a/b);elseprintf(“Invalidselsction.”);/*main*/YS37switch语句 示例main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);ca
19、se B:printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default:printf(“错误输入n”);输入“c”,求输出结果。结果:6069 60 错误输入?!38switch语句 示例解决方法break语句:main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;defau
20、lt:printf(“错误输入n”);这才差不多!break!运行结果:606939switch语句 示例解决方法break语句:main()char s;scanf(“%c”,&s);switch(s)case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“max)max=b;if(cmax)max=c;if(dmax)max=d;printf(”MAX=%dn”,max);42例:找出三个整数中的最大、最小数。main()inta,b,c,m
21、ax,min;printf(”Entera,b,c:”);scanf(”%d,%d,%d”,&a,&b,&c);max=ab?a:b;max=cmax?c:max;min=ab?a:b;min=cmin?c:min;printf(”MAX=%dnMIN=%dn”,max,min);43例:输入三个整数,由大到小输出。main()inta,b,c;scanf(“%d,%d,%d”,&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(”%d,%d,%dn”,a,b,c);输入abc ab?ab bc?a=10
22、000)w=5;/*求解位数*/elseif(a=1000)w=4;elseif(a=100)w=3;elseif(a=10)w=2;elsew=1;p5=a/10000;/*分离各位*/p4=(a-p5*10000L)/1000;/*L:防止溢出*/p3=(a-p5*10000L-p4*1000)/100;46p2=(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)case5:printf(”%dbbb”,p5);/*无须break*/ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语句 程序控制 结构 教案
限制150内