C语言程序设计课件第4章.ppt
《C语言程序设计课件第4章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第4章.ppt(76页珍藏版)》请在三一办公上搜索。
1、返回主目录,C语言程序设计,(第4章 结构化程序设计),本章主要介绍结构化程序设计方法与设计过程和C语言程序结构化程序设计。,1.顺序结构程序设计2.选择结构程序设计3.循环结构程序设计,一、C语言程序结构分类,C语言程序三大结构:顺序结构、选择结构、循环结构,按照各语句的先后顺序逐行执行,且每个语句都会被执行到。,当满足(或不满足)某个条件时不停地重复执行某些语句。,当满足(或不满足)某个条件时执行某些语句。,二、C语言程序基本语句,在C语言程序中,语句可以分为以下五类:控制语句:能完成一定的控制功能(有9种控制语)if()else(条件选择语句)for()(多功能循环语句)while()(
2、当型循环语句)dowhile()(直到型循环语句)go to(无条件转移语句)switch(多支选择语句)continue(结束本次循环语句)break(执行中止语句)return(函数返回值语句),函数调用语句:能实现函数的调用功能。例如:printf(%d,a);表达式语句:由一个表达式加分号构成,能实现数据计 算功能。例如:a=3*b;空语句:由单独的一个分号组成,对程序执行不产生直 接影响,没有实际意义。例如:;表示什么也不做,没有实际意义,复合语句:用将若干个语句括起来,形成一个整体,组成一个复合语句。例如:a=3;b=4;c=a*b+25;d=a*b*c;,三、顺序结构程序一般设计
3、方法,顺序结构程序设计方法:一般先对要处理的“事件”进行分析,根据分析的结果写出相应算法,画出流程图,再写出相关的源程序。,在顺序结构程序中,一般包括以下几个部分:,#include stdio.h#include math.hmain()float a,b,c,s1,len,s;printf(Input the a,b,c:);scanf(%f,%f,%f,例4-2输入一个摄氏温度,输出它的华氏温度。温度换算公为(f为华氏温度,c为摄氏温度),#include stdio.hmain()float f,c;printf(请输入一个摄氏温度值:);scanf(%f,例4-3 设圆的半径为r=1
4、.5,圆柱高h=3,求圆柱表面积、圆柱体积。(圆半径、圆柱高从键盘输入,输出结果时要求小数点保留2位小数。),#include“stdio.hmain()float r,h,ar,av;printf(输入半径和高);scanf(%f,%f,一、选择结构程序设计,在C语言中,用if语句或switch语句来实现选择结构,条件选择结构,多支选择结构,根据所给的条件作出判断,有选择性的执行部分语句。,根据所给的数据和已有的选择支相比较,执行相符合的选择支。,二、条件选择if语句,if语句是用来判定所给的条件是否满足,根据判断的结果决定执行何种操作。if语句有三种形式:if()if()else if()
5、else if()else,1.逻辑if语句格式:if(表达式)语句,功能:当括号内表达式的值为“真”时,才能执行后面的操作,并且只能执行一个语句而不能执行若干个语句,如果括号内表达式的值为“假”时,将不执行任何操作。,例如:if(xy)a=x*y;if(xy)a=x-y;b=x+y;,例 4-4 输入三个整数x,y,z,按从小到大的顺序输出。,分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。,程序如下:#include stdio.hmain()int x,y,z,t;printf(
6、please input the three numbers:);scanf(%d,%d,%d,例如:if(xy)a=b;else a=c;if(ab)a=a+b;else t=a;a=b;b=t;,功能:当括号内表达式的值为“真”时,执行语句1的操作,否则,执行语句2的操作。同样,也只能执行一个语句而不能执行若干个语句。,2.结构模块if()else语句 格式:if(表达式)语句1 else 语句2,#include stdio.hmain()int x,y;scanf(%d,if(x=0)y=x*x+1;,例4-6 写一程序,从键盘上输入年份year(4位以内十进制正整数),判断其是否为闰
7、年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。,#include stdio.hmain()int year;printf(Please input the year:);scanf(%d,3.结构模块ifelse if语句 格式:if(表达式1)语句1 else if(表达式2)语句2.else if(表达式n)语句n else 语句n+1,功能:当表达式1的值为“真”时,执行语句1;如果表达式1的值为“假”,再判定表达式2是否为“真”,如果表达式2的值为“真”,执行语句2,如果表达式2的值为“假”,再判定表达式3是否为“真”,如果表达式3的值为“真”,执行语句3;以
8、此类推;如果所有表达式的值都为“假”,则执行语句n+1。同样,也只能执行一个语句而不能执行若干个语句。,例如:if(x400)t=0.4;a=1.5;else if(x300)t=0.3;a=1.2;else if(x200)t=0.2;a=1.0;else t=0.1;a=0.8;,例 4-7 有一函数:,编一程序,输入一个x值,求y值。,#include stdio.hmain()int x,y;scanf(%d,if(x0)y=x*x+1,注意:在if语句中,括号内的表达式一般为关系表达式或逻辑表达式,如果括号内的表达式为其它表达式,则无法实现选择操作。例如:if(2)print(“ho
9、w are you”);该语句的输出结果为“how are you”,因为表达式的值为2,按“真”处理。如果写成if(a)print(how are you);输出结果同样为“how are you”,因为表达式的值为a,还是按“真”处理。在if语句中,每次只能执行一个语句或一个选择支,如果要执行多个语句,应当将这些语句用 括起来,形成一个复合语句。在if语句中,允许括号内存在赋值表达式。例如 if(a=b)0)t=a;if语句在程序中相当一个复合语句。,4.条件运算符与条件表达式,格式如下:表达式1?表达式2:表达式3,功能:先算表达式1,若表达式1为“真”,则求解表达式2,此时表达式2的值
10、就是整个条件表达式的值。若表达式1为“假”,则求解表达式3,此时表达式3的值就是整个条件表达式的值。,条件运算符是一个三目运算符,要求有三个操作数;结合方式是从右到左;优先级别很低,只比赋值运算符和逗号运算符高。,例如:假定a=3,b=4,执行表达式mmx=ab?a+1:b+1后,mmx的值为5。假定a=3,b=5,c=2,d=3,执行表达式mmx=ab?a:cd?c:d后,mmx的值为3。,例4-8 从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。,#include stdio.hmain()char ch;printf(Input a character:
11、);scanf(%c,思考题:例 4-9 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数。例 4-10 从键盘上输入任意三个数作为三角形的三条边,求三角形的面积。,三、多支选择switch语句,C语言提供了switch语句直接处理多分支选择。sw
12、itch语句的一般形式为:,switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;.case 常量表达式:语句n;break;default:语句n+1;,功能:先算出表达式的值,然后判断该表达式的值是否与某个case后面的常量表达式的值相等,若相等,则执行此case后面的语句,当执行到break语句时,跳出switch语句。若该表达式的值与所有case后面的常量表达式的值都不等,则执行default后面的语句。,注意:switch后面括号内的表达式一般为普通表达式,可以是int、char和枚举型中的一种,不应为关系表达式或逻辑表达式,如
13、果为关系表达式或逻辑表达式,就不能实现多支选择。每个case后面常量表达式的值,必须各不相同,否则会出现相互矛盾。同时必须使case后面的常量表达式类型和switch后面括号内表达式的类型保持一致。,case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到相匹配的标号,就从此标号开始执行,不再进行标号判断,因此,必须加上break语句来结束switch语句的执行。各case及default子句出现的先后次序,不影响程序执行结果。多个case子句,可共用同一语句。一个switch语句在C语言程序中相当于一个复合语句。用switch语句实现的多分支结构程序,完全可以用if语句来实现
14、。,例 4-11 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。,#include stdio.hmain()float score,int grade;printf(Input a score(0100):);scanf(%f,case 6:printf(grade=Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(grade=En);break;default:prin
15、tf(“data error!n);getch();,程序如下:,#include stdio.hvoid dummy()main()char ch;printf(1.输入记录n);printf(2.记录列表n);printf(3.删除记录n);printf(4.修改记录n);printf(请输入选择:n);ch=getchar();switch(ch)case 1:printf(输入记录n);,dummy();break;case 2:printf(记录列表n);dummy();break;case 3:printf(删除记录n);dummy();break;case 4:printf(修改
16、记录n);dummy();break;default:printf(选择错!n);getch();,例 4-12 在显示器上显示一个菜单程序的模型。,四、选择结构的嵌套,C语言程序中,可以在一个选择语句中嵌套一个或多个选择语句。,if(ab)if(cd)x=1;else if(ac)if(bd)x=2;else x=3;else x=6;else x=7;,if(ab)if(cd)x=1;else if(ac)if(bd)x=2;else x=3;else x=6;else x=7;,1.if语句可以实现多重嵌套:,一般而言,确定if语句的嵌套次序的方法如下:else只能与其前面最近的if 配
17、对。每个else只能配对一次。配对后的if()else相当于一个复合语句。,例 4-13 求方程 ax2+bx+c=0的根。,#include stdio.h#include math.hmain()float a,b,c,x1,x2,delta,rel,ima;printf(Input the a,b,c:);scanf(%f,%f,%f,if(delta1e-6),printf(has two real roots:n);x1=(-b+sqrt(delta)/(2.0*a);x2=(-b-sqrt(delta)/(2.0*a);printf(x1=%8.4f,x2=%8.4f,x1,x2)
18、;if(fabs(delta)=1e-6)printf(has two equal real roots:n);x1=(-b+sqrt(delta)/(2.0*a);x2=(-b-sqrt(delta)/(2.0*a);printf(x1=%8.4f,x2=%8.4f,x1,x2);if(delta-1e-6)printf(has two complex roots:n);rel=(-b)/(2.0*a);ima=sqrt(-delta)/(2.0*a);printf(x1=%8.4f+%8.4fi,rel,ima);printf(x2=%8.4f-%8.4fi,rel,ima);getch(
19、);,2.switch语句的嵌套:,main()int x=1,y=0;switch(x)case 1:switch(y)case 0:printf(“*1*n”);case 1:printf(“*2*n”);case 2:printf(“*3*n”);,思考题:编写一个简单的财务应用程序来计算职工的所得的实际工资。具体要求:总工资=基本底薪+奖金。高级职员:底薪2000元,奖金系数1.15 一般职员:底薪1500元,奖金系数1.10 办 事 员:底薪1000元,奖金系数1.0 利润100万,高出100万部分奖金提成1.5%按国家要求扣税。按国家要求扣养老金(占基本底薪8%)、医疗保险(占基本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件
链接地址:https://www.31ppt.com/p-5379242.html