




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 C语言程序结构, C语言源程序由多个函数构成,其中有且只有一个 main函数,应用程序的入口点。 函数由函数头和函数体组成。 函数体由声明和语句组成。 C中语句有,表达式语句 函数调用语句 空语句 复合语句 控制语句,C语言语句,表达式语句 表达式; 函数调用语句 printf(“hello world”); 复合语句:用括起的多条语句 语句1; 语句2; 空语句 ; 控制语句 条件语句:if语句,switch语句 循环语句:do while语句,while语句,for语句 转向语句:break语句,continue语句,goto语句,return语句,语句是c+程序中最小的可执行单元。一条语句由一个分号结束。语句可以很简单,也可以很复杂。,复合语句也称为块(语句块),在语法上起一个语句的作用。 对单个语句必须以“;”结束, 对复合语句,其中的每个语句仍可以“;”结束,而整个复合语句以“”结束。,4.1 顺序结构,按语句顺序逐条执行 例:输入两个整数,输出它们的和,void main() int x,y,sum; x=10; y=20; sum=x+y; printf(“%d+%d=%d”,x,y,sum); ,A,B,4.2 选择结构,4.2.1 if语句(2个分支选择) 语法形式 if ( 表达式) 语句 else 语句 说明: 表达式一般为关系表达式或逻辑表达式。但并不限于这两种表达式,只要表达式类型是任意数值类型均可。(值为0代表假,值为非0代表真) 语句为内嵌语句,可以是简单语句、复合语句、空语句,控制语句。,条件,A,B,Y,N,可选,例1:输入一个整数,输出其绝对值 例2:对输入的两个正整数求和,否则提示输入错误。 例3:输入两个整数,输出其中较大的数 例4:输入三个整数,判断这三个整数能否作为三角形的三条边,例1:输入一个整数,输出其绝对值 #include void main() int a,b; scanf(“%d“, ,例2:对输入的两个正整数求和,否则提示输入错误。 #include void main() int a,b,sum; scanf(“%d%d“, ,if语句嵌套 if 语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。,if(条件) 语句 else 语句,if(条件) 语句 else 语句,if(条件) 语句 else 语句,if(条件1) 语句 else if(条件2) 语句 else if(条件3) 语句 else 语句,例1:将成绩转换为ABCDE五级分制 例2:输入三个整数,输出其最大值,#include void main() int a,b,c,max; scanf(“%d%d%d“, ,#include void main() int a,b,c,max; scanf(“%d%d%d“, ,#include void main() int a,b,c,max; scanf(“%d%d%d“, ,例2:输入三个整数,输出其最大值(三种解法),if语句嵌套注意事项 else总是与最近的if语句配对 if或else后是多条语句,必须用 括起,if(a=0) if(b=1) a+; else a- -;,if(a=0) if(b=1) a+; else a- -; ,if(a=0) if(b=1) a+; else a- -;,if ( x6) if ( y6 ) System.out.print(“x=“+x); System.out.print(“y=“+y); ,if ( x6) if ( y6 ) System.out.print(“x=“+x); System.out.print(“y=“+y); ,4.2.2 switch语句(多个分支选择) 语法形式为: switch(表达式) case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 case 常量表达式n: 语句序列n default: 语句序列 说明: 表达式值为整型或字符型 常量表达式值与条件表达式同类型,只能是常量,且各个值不能相同 default部分可省略 每个case分支可以有多条语句,可以不用 执行 每个 case 语句是一个入口点 可以使用break;跳出switch语句,例1:输入星期的数值,输出对应的英文单词 例2:输出对应月份的天数 程序见书p48,49,4.3 循环结构,提供重复处理的能力 ,当某一特定条件为true时,循环语句就重复执行 ,并且 每循环一次就会测试一下循环条件 ,如果为false 则循环结束 ,否则继续循环。 C提供了三种支持循环结构的语句: while语句 dowhile语句 for语句 三者可以完成类似的功能 ,不同的是它们控制循环的方式。,4.3.1 while语句,语法形式 while(表达式) 语句 说明 表达式一般是关系表达式或逻辑表达式,但不局限于此。 循环条件表达式值为非0表示真,循环继续,0表示假,循环停止。 语句:简单语句,控制语句,复合语句,空语句。,while语句的执行流程图,求表达式 的值,执行循环体 语句,表达式的 值为真?,是,否,例1:求和1+2+100 例2:输入一个正整数,求其阶乘。(p50) 例3:求两个正整数的最大公约数。(p51),4.3.2 do-while语句,语法形式: do 语句 while(表达式) ; 与while语句不同的是do循环中的 至少会执行一次,而while语句当条件第一次就不满足时,语句一次也不会被执行。,否,是,do-while语句的执行流程图,例1:输入一个正整数,求其阶乘。(p52) 例2:求和1+2+100,4.3.3 for语句,语法形式 for(表达式1;表达式2;表达式3) 语句 说明 表达式1:初值表达式,初始化循环控制变量并 表达式2:循环条件表达式,判断循环是否进行,非0为真,执行循序,0为假,终止循环。 表达式3:修改循环控制变量,改变循环条件,例1:输入一个正整数,求其阶乘。 例2:求和1+2+100。,for循环语句头的变化,for(表达式1;表达式2;表达式3) 语句,三个表达式都可选,但“;”不能省。 表达式1和表达式3都可以是“,”分隔的表达式列表 逗号运算符:, 逗号表达式:用逗号将若干个表达式连起来组成的表达式。 例如 已知 int n,i; i=0,n=1 逗号表达式运算:从左到右依次求出各表达式的值,并将最后一个表达式的值做为整个逗号表达式的值。,例1:求和1+2+100。 (p54),循环语句小结,1、循环语句要素 循环控制变量、循环终止条件、循环体 循环控制变量赋初值 每次循环更改循环控制变量 2、三种循环语句比较 三种语句可以互相替代 循环次数确定:for语句 循环次数不定: 至少执行一次循环体 do-while语句 循环体可能一次都不执行 while语句,循环语句嵌套,例:输出乘法99表(p58),#include void main() int i,j,k; for(i=1;i=9;i+) for(j=1;j=i;j+) k=i*j; printf(“%2d*%2d=%2d“,i,j,k); printf(“n“); ,循环语句与分支语句嵌套,例:显示ASCII码为30到90的所有字符(p57),4.3.4 break和continue语句,1、break语句 语法形式 break; 用于switch语句:跳出switch语句 用于循环语句:终止循环,跳出循环语句 2、continue语句 语法形式 continue; 用于循环语句:跳过本次循环,开始下一次循环(下一次循环是否执行仍然取决于循环条件的判断。 ),例1:读取输入的数据,并求和,当输入数据为0时,结束。(p59) 例2:求满足条件12+22+n2=1000的最大n值(p59) 例3:输出200以内所有不能被7整除的数 (参考p60,61例4-16,4-17),程序设计,分析问题,确定解决方法(数学模型,算法思想) 确定数据结构(确定要处理的数据,以及数据的组织) 确定算法,描述算法(确定如何处理数据,使用哪些语句,操作流程是什么 编写程序,算法描述,算法描述方法 程序流程图 N-S图 PAD图 伪代码,图形表示,自然语言表示,程序流程图,三种基本成分: 加工步骤 逻辑条件 控制流,A,B,A,B,p,真,假,p,A,真,p,A,真,假,假,A,B,G,i=,=a,=b,=c,开始,输入n,s=s+a a=a+1,an,Y,N,输出 s,结束,例:输入整数n,求小于n的所有整数之和,分析: 数学模型:sum=1+2+3+n 算法思想:循环累加 需处理的数据: n,所求的和 累加的循环控制变量 算法描述,s=0,a=0,PAD图,PAD图所描述的程序结构十分清晰。 图中最左边的竖线是程序的主线,即第一层控制结构。 随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。 PAD图中竖线的总条数就是程序的层次数;,S1,S2,S1,S2,Q,Q1,Q2,Qn,s1,s2,sn,WHILE Q,S,do while Q,S,c1,c2,cn,S1,S2,Sn,switch e=,for ,S,例:输入整数n,求小于n的所有整数之和,分析: 数学模型:sum=1+2+3+n 算法思想:循环累加 需处理的数据: n,所求的和 累加的循环控制变量 算法描述,输入n,while an,s=s+a,a+,输出s,a,s初始化,开始,结束,例1:输入一个整数n,求2n之间的所有素数(p63) 例2:已知公式 ex=1+x+x2/2!+xn/n! 输入x与n的值,求ex (p61),例1:输入一个整数n,求2n之间的所有素数 分析: 数学模型: 求素数:n%2!=0 & n%3!=0n%(n开方取整)!=0 ,那么n是素数 算法思想: 循环(i从2到n判断每个数i是否素数) 循环(j从2到(n的开方取整)判断i能否被j整除) 需处理的数据 n 循环控制变量 算法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能节能幕墙施工简易服务协议书
- 2025年度路灯广告设备安装与维护合同
- 2025年度幼儿托管班特色课程开发合同
- 2025版期货代客理财市场分析报告合同
- 2025年度教育信息化设备采购与维护服务合同范例
- 2025版土木工程电气安装工程合同
- 2025年度户外广告投放合同协议
- 2025年新型城镇化示范项目厂房拆迁补偿协议
- 2025年事业单位借调人员管理与服务协议及绩效改进合同
- 第十八届振兴杯全国青年职业技能大赛工业视觉系统运维员理论试题库(含答案)
- 2025年营养师考试冲刺押题试卷:营养师实操技能考核与解析
- 2025重庆对外建设集团招聘41人笔试参考题库附答案解析
- 中医健康管师试题及答案
- 投标造价委托协议书范本
- 新粒子生成与生长机制-洞察及研究
- 六年级下册数学竞赛试题-抽屉原理习题(含答案)
- 2025年军队专业技能岗位文职人员招聘考试(炊事员)历年参考题库含答案详解(5套)
- 高警示药品风险管理
- 医院重症护理技能竞赛理论考试(CRRT)试题及答案
- 2025年新乡事业单位招聘考试笔试试卷(附答案)
- 厦门闽南话趣味教学课件
评论
0/150
提交评论