版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章分支结构程序设计第4章分支结构程序设计主要内容4.1程序的逻辑结构4.2if语句4.3switch语句 4.4goto语句4.5分支结构应用举例4.1程序的逻辑结构4.1.1逻辑结构概述4.1.2三种结构的框图表示4.1.1逻辑结构概述顺序结构、分支结构和循环结构是C语言程序的三种基本结构,这三种结构互相结合,可以实现程序的任何逻辑控制。
4.1.1逻辑结构概述顺序结构:问题:输入一个学生的两门课的成绩,计算出平均成绩。算法:步骤①开始步骤②输入一个学生两门课的成绩a1、a2。步骤③计算平均成绩(a1+a2)/2→ave。步骤④输出平均成绩ave。步骤⑤结束
4.1.1逻辑结构概述分支结构问题:输入一个学生的2门课的成绩,若平均成绩不低于90分,则显示“优等生”,否则显示“要加油啊!”。算法:步骤①开始步骤②输入一个学生两门课的成绩a1、a2。步骤③计算平均成绩(a1+a2)/2→ave。步骤④若ave≥90,则执行步骤⑤;否则执行步骤⑥步骤⑤输出“优等生”,转步骤⑦步骤⑥输出“要加油啊!”。步骤⑦结束4.1.1逻辑结构概述循环结构
问题:按照问题2的标准,统计全班(n个学生)的优等生人数。
算法:步骤①开始;步骤②设置变量count对输入的学生数计数,count初值为1;设置变量result对优等生计数,初值为0。步骤③输入班级学生数n。步骤④若count≤n,则执行步骤⑤;否则转步骤⑩。步骤⑤输入一个学生两门课的成绩a1、a2。步骤⑥计算平均成绩(a1+a2)/2→ave。步骤⑦若ave≥90,则执行步骤⑧;否则转步骤⑨;步骤⑧
result+1→result。步骤⑨
count+1→count;转步骤④;步骤⑩输出统计结果,结束。
4.1.2三种结构的框图表示1.顺序结构传统流程图N-S图4.1.2三种结构的框图表示2.分支结构传统流程图N-S图4.1.2三种结构的框图表示3.循环结构传统流程图N-S图4.2if语句4.2.1if语句的一般形式4.2.2if语句的简单形式4.2.3if语句的嵌套结构4.2.4if-elseif结构4.2.1if语句的一般形式结构
if(表达式){语句组1}else{语句组2}其执行过程如果表达式的值为非0,则执行“语句组1”,然后执行紧接“语句组2”之后的语句;否则,跳过{语句组1}而执行{语句组2},然后继续向下执行。4.2.1if语句的一般形式例4-1输入一个学生的两门课的成绩,若平均成绩不低于90分,则显示“优等生”,否则显示“要加油啊!”。/*programe4-1.c*/#include<stdio.h>voidmain(){ inta1,a2,ave; printf("输入两门课的成绩,数据之间用“,”分隔:"); scanf("%d,%d",&a1,&a2); ave=(a1+a2)/2;
if(ave>=90) printf("优等生!\n");
else printf("要加油啊!\n");}4.2.1if语句的一般形式例4-2
计算分段函数的值。/*programe4-2.c*/#include<stdio.h>voidmain(){intx,y;printf("X=");scanf("%d",&x);if(x>0)y=x+25;elsey=x-25;printf("Y=%d\n",y);}4.2.2if语句的简单形式
结构if(表达式)
{语句组}
执行过程若表达式的值非0(即真),则执行{语句组},然后继续执行if语句的下一个语句;否则,不执行{语句组},而直接执行{语句组}之下的语句,即if语句的下一个语句。简言之,该if语句的功能就是根据条件(表达式的值),决定是否执行{语句组}。4.2.2if语句的简单形式例4-3
输入一个整数x,若是偶数,则输出它。/*programe4-3.c*/#include<stdio.h>voidmain(){intx;printf("Inputx:");scanf("%d",&x);if(x%2==0)printf("%d\n",x);}4.2.1if语句的简单形式例4-2
求两个整数的最大数。①开始;②设两个数为x,y,且用max表示大数;③输入x,y的数值;④设x是大数:max=x;⑤判断max<y的正确性,若正确,则y是大数:max=y;⑥输出max的值;⑦结束。/*programe4-4.c*/#include<stdio.h>voidmain(){ intx,y,max; printf("Inputx,y:"); scanf("%d,%d",&x,&y); max=x; if(max<y) max=y; printf("MAX=%d\n",max);}4.2.3if语句的嵌套结构if语句的嵌套
if语句的{语句组}内又使用了if语句。例4-5对实数x,若其不小于0,则求它的平方数y,当y>500时输出y,否则输出500;若x<0,则输出x。4.2.3if语句的嵌套结构4.1.3if语句的嵌套结构/*programe4-5.c*/#include<stdio.h>voidmain()
{floatx,y;printf("Inputarealnumber:");scanf("%f",&x);
if(x>=0.0){y=x*x;if(y>500.0)printf("%f\n",y);
elseprintf("%f\n",500.0);}
elseprintf("%f\n",x);}嵌套的if语句外层if语句4.3.3if语句的嵌套结构例4-6计算分段函数值/*programe4-6.c*/#include<stdio.h>voidmain(){floatx,y;printf("Input:");scanf("%f",&x);if(x>0)y=5*x+8;elseif(x==0)y=36;elsey=1.5*x-26;printf("y=%f\n",y);}4.2.4if-elseif结构一般结构if(表达式1)
{语句组1}elseif(表达式2)
{语句组2}elseif(表达式3){语句组3}
.
.
.elseif(表达式n){语句组n}else{语句组n+1}
执行过程从上到下逐个对条件进行判断,一旦发现条件满足就执行与它有关的语句组,其下的所有条件都不再判断,当然它们的语句组也不被执行;当任何一个条件都不满足时,执行最后一个{语句组n+1}。If语句说明表达式:常量、变量、运算符、函数、()组成;If中的表达式常见的是关系表达式或逻辑表达式If中的表达式也可以是:常量、变量或其他类型表达式{}用来划分程序层次,配对使用。可以用缩进来配合。但是缩进不能代替{}。每一个分支执行后都退出分支结构继续向下执行,分支结构内部如果没有其他分支或循环语句的话顺序执行4.3switch语句switch语句是专门用于多路分支选择的语句,适用于if-elseif式的结构,而且更清晰。
switch语句的一般格式:switch(表达式){case常量1:
语句组1case常量2:
语句组2┇case常量n:
语句组ndefault:
语句组n+1}执行过程首先计算switch后面表达式的值,然后与第一个case的“常量”进行比较,若不相等,则跳过其下的语句组,再与下一个case的“常量”进行比较;若与某一个case的“常量”相等,则从其下的语句组开始,依次向下执行各语句组的语句,直至遇到一个强制中断语句break或执行完最后一个语句组语句为止。当所有case都不符合要求时,执行default下的语句组语句。一般格式中的“default:”及其语句组允许缺省。
4.3switch语句例4-7switch执行过程示例程序。main(){inti;scanf("%d",&i);switch(i){case0:printf("zero");case1:printf("one");break;case2:printf("two");case3:printf("three");case4:printf("four");default:printf("other");}printf("\n");}4.3switch语句例4-8缺省case语句组的程序举例。main(){charresult;scanf("%c",&result);switch(result){case'A':case'B':case'C':printf("Good!\n");break;case'D':case'E':printf("Bad!\n");break;default:printf("Error!\n");}}4.4goto语句goto语句是一种无条件转移语句,主要用于控制程序的执行方向,也可以利用它反复地执行同一段程序。一般格式:goto语句标号;语句标号是一个标识符,它和语句之间以“:”分隔,执行goto语句后,程序将跳转到该标号处,并执行其后的语句。4.4goto语句例4-9
输入一批自然数,求它们的累加和,当输入数值为-1时,结束求和过程。/*programe4-9.c*/#include<stdio.h>voidmain(){intn,sum=0;loop:printf("Inputainteger:");scanf("%d",&n);if(n!=-1){sum=sum+n;
gotoloop;
}printf("Sum=%d\n",sum);}4.5分支结构应用举例4.5.1闰年问题4.5.2判断等边三角形4.5.3求解一元二次方程4.5.4学生成绩分等显示4.5.1闰年问题例4-10闰年判断程序。1.问题分析与算法设计⑴逻辑表达式year%400==0||year%4==0&&year%100!=0⑵输入year,根据上述逻辑表达式的值,即可得到year是否闰年的结论。
2.实现程序/*programe4-10.c*/#include<stdio.h>voidmain(){ intyear; printf("Inputyear:"); scanf("%d",&year); if(year%400==0||year%4==0&&year%100!=0) printf("%disaleapyear.\n",year); else printf("%disnotaleapyear.\n",year);}4.5.2判断等边三角形
例4-11输入三角形的边长值,判断三角形是否是等边三角形。1.问题分析与算法设计设三角形三条边为a、b、c,则对于输入的任意一组数据,首先要判断其正确性,若不能满足构成三角形的条件时,则数据不正确,要重新输入数据。能构成三角形时,再判断是否是等边三角形。⑴下面的逻辑表达式成立时,数据不正确,不能构成三角形。a<=0||b<=0||c<=0||a+b<c||a+c<b||b+c<a⑵能构成三角形,且下面的逻辑表达式成立时,则为等边三角形。a==b&&a==c2.实现程序/*programe4-11.c*/#include<stdio.h>voidmain(){ inta,b,c; loop:printf("a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); if(a<=0||b<=0||c<=0||a+b<c||a+c<b||b+c<a) gotoloop; if(a==b&a==c) printf("equilateraltriangle\n"); else printf("noequilateraltriangle\n");}4.5.3求解一元二次方程例4-12
设计求解一元二次方程(a≠0)的通用程序1.问题分析与算法设计⑴若有实根,则计算并输出实根⑵程序的输入量为方程的系数a、b、c。。⑶程序中要使用数学函数sqrt(),要注意打开math.h文件。2.实现程序/*programe4-12.c*/#include<stdio.h>#include<math.h>voidmain(){ floata,b,c; floatx1,x2,d; printf("Inputa,b,c:"); scanf("%f,%f,%f",&a,&b,&c); d=b*b-4*a*c; if(d>=0) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } else printf("norealroot.\n");}4.5.4学生成绩分等显示例4-13
学生成绩分等显示程序。学生有数学、英语两门课程,按百分制考核。要求输入各门课程成绩,按平均成绩分等显示:优秀(excellence):平均成绩≥90;良好(allright):80≤平均成绩<90;中等(middling):70≤平均成绩<80;及格(pass):60≤平均成绩<70;不及格(fail):平均成绩<60。4.5.4学生成绩分等显示/*programe4-13.c*/#include<stdio.h>voidmain(){inta,b;intave;repeat:printf("Data(a,b):");scanf("%d,%d",&a,&b);if(a<0||b<0)gotorepeat;ave=(a+b)/2;switch(ave/10){case10:case9:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年网络安全与数据安全产业机遇知识题库
- 2026年电力交易结算流程与不平衡资金分摊解析
- 2026年心理学基础理论及实操知识
- 2026年中国象棋等级考试纲要与模拟题集解析
- 2026年现代物流技术与管理要点解析单选题集
- 2026年文化馆音乐辅导基本知识试题集
- 2026年中石化新材料表征与测试技术考核练习题
- 2026年街道办事处公务员面试模拟题
- 2026年成功面试技巧面试问题与回答指南
- 2026年中药材质量安全及追溯体系建设要求试题
- GB/T 5796.2-2005梯形螺纹第2部分:直径与螺距系列
- 劳务员岗位实务课件
- 中外历史人物评说之孙中山
- 宋词简要+宋词精选
- 国家开放大学《临床药理学》形考任务1-3参考答案
- 小学数学西南师大四年级下册四三角形三角形分类 PPT
- 山西洗煤厂安全管理人员机考题库大全-上(单选、多选题)
- 四章-自由基共聚合课件
- 螺杆式空气压缩机技术规格书(示例)
- 谈话考察记录
- 无菌GMP 操作指南:无菌医疗器械生产过程确认
评论
0/150
提交评论