第4章选择结构、循环结构程序设计

上传人:沈*** 文档编号:244369139 上传时间:2024-10-04 格式:PPT 页数:42 大小:1.43MB
返回 下载 相关 举报
第4章选择结构、循环结构程序设计_第1页
第1页 / 共42页
第4章选择结构、循环结构程序设计_第2页
第2页 / 共42页
第4章选择结构、循环结构程序设计_第3页
第3页 / 共42页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章,选择结构、循环结构程序设计,4.1,概述,4.1.1 C,语句概述,通常一个,C,程序由若干个函数组成,每一个函数又包括声明部分和执行部分,执行部分又由干条语句组成,每条语句总是以“;”结束。语句是用来对数据进行加工,(,完成操作任务,),,是构成程序的基本单位,,注意:,C,语句都是用来完成一定操作的,出现在函数体的执,行部分,作用是向计算机系统发出,操作,指令。声明部分的内容不应称为语句。如,int,a;,不是一个,C,语句。,C,语句,控制语句,函数调用语句,由一次函数调用加一个分号构成一个语句。,表达式语句,空语句,复合语句,if()else ,switch(),for(),while(),do while(),continue,break,goto,return,if (xy),z=x;,else,z=y;,printf(Hello,!);,由表达式加一个分号构成一个语句。,a=3;,;,由,将一些语句括起来。,t=a;,a=b;,b=t;,C,语句分类,4.1.2,结构化程序设计方法,自顶向下,逐步细化,模块化设计,结构化编码,4.2,选择结构程序设计,1.if,语句的三种基本形式,(1)if,(,表达式,e,)语句,例:,if(xy),printf(“%d”,x,);,表达式,e,语句,真(非,0,),假,(,0,),(,单分支,),4.2.1 if,语句,注意:在,C,语言中,表达式,e,的值为非,0,时,系统均按“真值”处理,如:,if(a,),printf(“O.K,.”);,x=-5;,if(x,),printf(“O.K,.”);,y=0;,if(y,=0),printf(“O.K,.”);,if(y,),printf(“O.K,.”);,#include ,void main(),float,a,b,t,;,scanf(“%f,%f”,&a,&b,);,if(ab),t=a;a=b;b=t;,printf(“%5.2f,%5.2fn”,a,b);,3,4,3.00,4.00,if(ab),t=a;a=b;b=t;,if(ab),t=a;,a=b;,b=t;,当某些语句作为一个整体出现的时候,必须是复合语句的形式。,3,4,4.00,0.00,例,4.1,输入两个实数,按代数值由小到大的顺序输出这两个数。,例,4.2,输入三个数,a,b,c,要求按由小到大的顺序输出。,if(a,b),将,a,和,b,对换,if(a,c),将,a,和,c,对换,if(b,c),将,b,和,c,对换,#include void main(),float a,b,c,t;scanf(,%f,%f,%f,if(b,c),t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2fn,a,b,c);,(2)if(,表达式,),语句,1,else,语句,2,例:,if(xy),printf(“%d”,x,);,else,printf(“%d”,y,);,条件,语句,1,语句,2,Y,N,双分支,例,4.3,输入任意三个整数,求三个数中的最大值。,#include ,void main(),int,a,b,c,max,;,scanf(“%d,%d,%d”,&a,&b,&c,);,if(ab),max=a,;,else max=b,;,if(maxc),max=c,;,printf(“max,=%,dn”,max,);,#include ,void main(),int,a,b,c,max,;,scanf(“%d,%d,%d”,&a,&b,&c,);,max=a,;,if(maxb)max=b,;,if(maxc),max=c,;,printf(“max,=%,dn”,max,);,#include,#include ,void main(),float a,b,c,p,s;,scanf(“%f,%f,%f”,&a,&b,&c,);,if(a+bc&a+cb&b+ca),p=(a+b+c)/2;,s=,sqrt(p,*(p-a)*(p-b)*(p-c);,printf(“s,=%7.2fn”,s);,else,printf(“Not,a triangle!n”);,例,4.4,输入三角形的三边,求三角形的面积。,3,4,5,s=6.00,3,4,8,Not a triangle!,(3)if,(,表达式,1,)语句,1,else if(,表达式,2),语句,2,else if(,表达式,3),语句,3,else if(,表达式,m),语句,m,else,语句,n,多分支,例:,if(number500)cost=0.15;,else if(number300)cost=0.10;,else if(number100)cost=0.075;,else if(number50)cost=0.05;,else cost=0;,说明:,(1)3,种形式的,if,语句中在,if,后面都有表达式,一般为逻辑表达式或关系表达式。,(2),第二,第三种形式的,if,语句中,在每个,else,前面有一个分号,整个语句结束处有一个分号。,(3),在,if,和,else,后面可以只含有一个内嵌的操作语句,也可以由多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。,2.if,语句的嵌套,在,if,语句中又包含一个或多个,if,语句称为,if,语句的嵌套。,形式:,if(),if(),语句,1,else,语句,2,else,if(),语句,3,else,语句,4,内嵌,if,匹配规则:,else,总是与它上面的、最近的、未配对的,if,配对。,例:,if(),if(),语句,1,else,if(),语句,2,else,语句,3,例:,if(),if(),语句,1,else,if(),语句,2,else,语句,3,当,if,和,else,数目不同时,可以加,花括号,来确定配对关系。,if(,表达式,),if(,表达式,),语句,else,语句,else,if(,表达式,3),语句,3,else,语句,4,例,已知,a=3 b=4 c=5 d=0,d=?,if(ab)d=a;,else,if(cb)d=c;,else d=b;,if(ab),if(cb)d=c;,else d=b;,if(ab),if(cb)d=c;,else d=b;,if(ab),if(cb)d=c;,else d=b;,else d=a;,d=5,d=3,d=0,d=4,例,4.5,求,ax,2,+bx+c=0,方程的解,。,基本的算法:,a=0,,不是二次方程。,b,2,-4ac=0,,有两个相等实根。,b,2,-4ac0,,有两个不等实根。,b,2,-4ac,0,),x1=(-b+sqrt(d)/(2*a);,x2=(-b-sqrt(d)/(2*a);,printf(,has distinct real roots:%f and%fn,x1,x2);else,p,=-b/(2*a);,q,=sqrt(,d,)/(2*a);,printf(,has complex rootsn,);,printf(,%8.4f+%8.4fin,p,q,);,printf(,%8.4f-%8.4fin,p,q,);,4.2.3,switch,语句,1,、,switch,语句的格式:,switch,(,e,),case,常量表达式,:语句,case,常量表达式,:语句,case,常量表达式,:语句,default,:语句,注意:,1,、表达式,e,一般是整型或字符型,而不能为实型。,2,、常量表达式,c,必须与表达式,e,类型一致。,3,、常量表达式,i,仅起语句标号作用,不作求值判断。,4,、常量表达式的值必须是唯一的,没用先后次序。,2,、执行过程,1),计算表达式,e,的值;,2),若表达式,e,的值与,case,后面的常量表达式,i,的值语句一致,则从语句,i,开始执行;,直到遇到,break,或,switch,语句的“,”,。,3),若与任何常量表达式值均不一致时,则执行,default,语句或执行后续语句。,例,:,要求按照考试成绩的等级输出百分制分数段,用,switch,语句实现:,switch,(,grade,),case,printf,(,85,100,),;,case,printf,(,70,84,),;,case,printf,(,60,69,),;,case,printf,(,60,),;,default,printf,(,error,),;,例,4.6,#include ,void main(),char grade;,printf,(“,请输入考试等级,AD:”);,scanf(“%c”,&grade,),;,switch(grade),case A:printf(“80100n”);,case B:printf(“7079n”);,case C:printf(“6069n”);,case D:,printf,(“60n”);,default:,printf(“errorn,”);,B,7079,6069,60,Error,根据输入的考试成绩等级打印出百分制分数段。,A:80100 B:7079 C:6069 D:60,说明:应在每一个,printf,后加,break,语句,#include ,void main(),char grade;,printf,(“,请输入考试等级,AD:”);,scanf(“%c”,&grade,),switch(grade),case A:printf(“80100n”);,break,;,case B:printf(“7079n”);,break,;,case C:printf(“6069n”);,break,;,case D:,printf,(“60n”);,break,;,default:,printf(“errorn,”);,B,7079,最后一行的,break,可以省略。,运输公司对用户计算运费。路程,(s),越,远,每公里运费越低。标准如下:,s250,没有折扣,250,s300,2%,折扣,500,s1000,5%,折扣,1000,s2000,8%,折扣,2000 s3000,10%,折扣,s3000,15%,折扣,设每公里每吨货物的基本运费为,p,,,货物重为,w,,,距离为,s,,,折扣为,d,,则总,运费的计算公式为,F=p*w*s*,(,1-d,),分析折扣变化的规律性:,折扣的“变化点”都是,250,的倍数,在横轴上加一种坐标,,c,的值为,s/250,。,c,代表,250,的倍数。,c1,,无折扣;,,折扣,=2,;,,,=5,;,,,=8,;,,,=10,;,,,=15,。,例,4.7,#include void main()int c,s;float p,w,d,f;scanf(%f,%f,%d,4.3,循环结构程序设计,4.3.1 while,语句,while,语句用来实现“当型”循环结构。,一般形式:,while(,表达式,),语句,;,当表达式为非,0,值时,执行,while,语句中的内嵌语句。其特点是,:,先判断表达式,后执行语句。,循环控制表达式,循环体,例,4.8,求,1,到,100,的和,#include void main(),int,i=1,,,sum=0;while(i=100)sum=sum+i;i+;,printf(“%dn”,sum,);,说明,:,(1),循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。,(2),在循环体中应有使循环趋向于结束的语句。,(3),循环前,必须给循环控制变量,i,赋初值。,读程序,4.3.2,用,do-while,语句实现循环,do-while,语句的特点,:,先执行循环体,然后判断循环条件是否成立。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!