版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:刘艳菊主讲:刘艳菊 C+程序设计2 本章内容提要:本章内容提要: 预处理预处理 顺序结构顺序结构 选择结构选择结构 循环结构循环结构 预处理与程序结构预处理与程序结构 C+程序设计3 3.1 预处理预处理 编译预处理编译预处理 文件包含文件包含 宏定义宏定义 无参无参 有参有参 条件编译条件编译 程序设计举例程序设计举例 预处理预处理 C+程序设计4 简介简介 预处理预处理(preprocessing) 在实施代码转换之前进行。在实施代码转换之前进行。 包括:包括: 包含其它文件包含其它文件 定义宏定义宏 有条件的编译程序代码有条件的编译程序代码 预处理命令预处理命令(preproces
2、sor directive)的格式特点的格式特点 以以#开头的一行(可以占多行)开头的一行(可以占多行) #前面只能出现空白符前面只能出现空白符 预处理命令不是语句,不要用分号(;)结束。预处理命令不是语句,不要用分号(;)结束。 编译预处理编译预处理 C+程序设计5 3.1.1文件包含文件包含 #include 把所包含的文件的内容放到指令所在的地方。把所包含的文件的内容放到指令所在的地方。 两种形式:两种形式: #include 只在指定存放头文件的目录下(只在指定存放头文件的目录下(IDE的的include子目录下)查找该文件。子目录下)查找该文件。 #include “filename
3、“ 首先在当前文件(该命令所在的文件)所在目录下查找该文件;首先在当前文件(该命令所在的文件)所在目录下查找该文件; 若未找到,再到指定存放头文件的目录下去查找。若未找到,再到指定存放头文件的目录下去查找。 好处:好处: 当许多程序中需要用到一些共同的常量、数据等资料时,可以把这当许多程序中需要用到一些共同的常量、数据等资料时,可以把这 些共同的东西写在以些共同的东西写在以.h作为扩展名的头文件中;作为扩展名的头文件中; 如果哪个程序需要用时,就可用文件包含命令把它们包含进来,省如果哪个程序需要用时,就可用文件包含命令把它们包含进来,省 去了重复定义的麻烦。去了重复定义的麻烦。 编译预处理编译
4、预处理 C+程序设计6 文件包含演示文件包含演示 /各种重要数据结构的声明各种重要数据结构的声明 /外部变量的定义外部变量的定义 /全程变量的定义全程变量的定义 /函数原型的声明函数原型的声明 如:如:long sum(int coutr; l=2*PI*r; /被替换为:被替换为:l=2*3.14159265*r; s=PI*r*r; /被替换为:被替换为:s=3.14159265*r*r; v=4.0/3.0*PI*r*r*r; /被替换为:被替换为:v=4.0/3.0*3.14159265*r*r*r; coutI=lns=snv=vendl; C+程序设计11 3.1.3宏定义宏定义
5、有参数的宏定义有参数的宏定义 格式:格式: #define 宏名宏名(形参表形参表) 字符串字符串 举例:举例: 说明:说明: 实参个数与形参个数相同,但没有类型要求。实参个数与形参个数相同,但没有类型要求。 宏名和形参表之间不能有空格出现。宏名和形参表之间不能有空格出现。 如果宏定义包含如果宏定义包含“#”,则宏替换时将,则宏替换时将“#”去掉,并将其前后字符去掉,并将其前后字符 串合在一起。串合在一起。 编译预处理编译预处理 #define M(a,b) a*b 例例3.3 分析下面程序运行后的结果。分析下面程序运行后的结果。 #include #define add(a,b) a+b v
6、oid main() int x(5),y(7),s; s=add(x+1,y-2); /被替换为:被替换为:s=x+1+y-2; couts=sy) max=x; expr statement 非0 0 C+程序设计17 例例3.6 问题问题 输入两个数,输出其最大值。输入两个数,输出其最大值。 分析分析 用用if分支结构。分支结构。 实现实现 编写编写C+代码。代码。 #include void main() int a,b,max; cout请输入两个数:请输入两个数:ab; max=a; if (maxb) max=b; couta=atb=bt两个数的最大值为:两个数的最大值为: m
7、axy) max=x; else max=y; expr statement1statement2 非0=0 C+程序设计19 例例3.6 问题问题 输入两个数,输出其最大值。输入两个数,输出其最大值。 分析分析 用用if-else分支结构。分支结构。 实现实现 编写编写C+代码。代码。 #include main() int a,b,max; cout请输入两个数:请输入两个数:ab; if (ab) /ifelse语句语句 max=b; /if子句:子句:ab成立时将成立时将a赋值给赋值给max else max=a; /else子句:子句:ab不成立时将不成立时将b赋值给赋值给max c
8、outa=atb=bt两个数的最大值为:两个数的最大值为: maxendl; C+程序设计20 程序示例:程序示例: 问题问题 输入一个年号,判断是否为闰年,如果是则输出输入一个年号,判断是否为闰年,如果是则输出“是闰是闰 年年”,否则输出,否则输出“是平年是平年”。 分析分析 只要满足下列两个条件之一者,即是闰年。只要满足下列两个条件之一者,即是闰年。 年号能被年号能被4整除,但要排除同时能被整除,但要排除同时能被100整除;整除; 年号能被年号能被400整除。整除。 用用if-else实现双分支结构。实现双分支结构。 流程控制语句流程控制语句 #include void main() in
9、t y; couty; if ( (y%4=0 else couty年是平年。年是平年。score80为良,为良, 80score70为中等,为中等, 70score60为及格,为及格, score60为不及格。为不及格。 分析分析 用用if-else的嵌套实现多分支结构。的嵌套实现多分支结构。 实现实现 编写编写C+代码。代码。 流程控制语句流程控制语句 #include void main() float score; coutscore; if (score=90) cout=80) cout=70) cout=60) coutPass!n; else coutscore80为良,为良,
10、 80score70为中等,为中等, 70score60为及格,为及格, score60为不及格。为不及格。 分析分析 用用switch实现多分支结构。实现多分支结构。 实现实现 编写编写C+代码代码 流程控制语句流程控制语句 #include void main() float score; int a; coutscore; a = score/10; switch (a) case 10: case 9: coutExcellent!n; break; case 8: coutGood!n; break; case 7: coutRight!n; break; case 6: coutP
11、ass!n; break; default: coutFailed!n; C+程序设计26 3.4 循环结构循环结构 C+中提供了三种循环语句:中提供了三种循环语句: whilie do-while for 它们的共同特点是它们的共同特点是根据循环条件来判断是否执行循环 体。 C+程序设计27 3.4.1 while循环语句循环语句 格式:格式: while(expression) statement; 特点:特点: 先判断表达式,后执行循环体。 说明:说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为0) 循环体内遇break,ret
12、urn,goto 无限循环: 例如 while(1) 循环体; expr 循环体 假(0) 真(非0) while C+程序设计28 例例3.10 问题问题 例例3.10 编程求出自然数编程求出自然数110的和的和 。 分析分析 利用循环产生利用循环产生110的自然数。的自然数。 累加求和。累加求和。 输出结果。输出结果。 注意:循环的初始化、条件。注意:循环的初始化、条件。 实现实现 编写代码。编写代码。 C+程序设计29 例例3.10 实现实现 编写代码。编写代码。#include main() int i,sum=0; i=1; while(i=10) sum=sum+i; i+; co
13、utsum; 循环初值 循环终值循环变量增值 循环条件 循环体 如果将该程序中 的while循环写成: sum+=i+;是否可以呢? C+程序设计30 3.4.2 do-while循环语句循环语句 格式格式 do statement; while(expression); 特点:特点: 先执行循环体,后判断表达式 说明:说明: 至少执行一次循环体 dowhile可转化成while结构 do 循环体 expr 假(0) 真(非0) while expr 循环体 假(0) 真(非0) 循环体 C+程序设计31 将例将例3.10转化成用转化成用do-while循环实现循环实现 实现实现 编写代码。编
14、写代码。 #include main() int i,sum=0; cini; do sum+=i; i+; while(i=10); coutsum; #include main() int i,sum=0; cini; while(i=10) sum+=i; i+; coutsum; 运行情况:运行情况: 1 sum=55 11 sum=0 运行情况:运行情况: 1 sum=55 11 sum=11 C+程序设计32 3.4.3 for循环语句循环语句 格式:格式: for(expr1 ; expr2 ; expr3) statement; 说明:说明: expr1:循环变量赋初值:循环变
15、量赋初值 expr2:循环条件:循环条件 expr3:循环变量增量:循环变量增量 特点:特点: for语句中语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号类型任意,都可省略,但分号“;” 不可省。不可省。 无限循环无限循环: for(;)。 for语句可以转换成语句可以转换成while结构。结构。 expr2 循环体 假(0) 真(非0) for expr1 expr3 expr1; while(expr2) 循环体语句; expr3; C+程序设计33 例例3.12 将例将例3.10改用改用for循环实现。循环实现。 实现实现 编写代码。编写代码。 #include
16、 main() int i,sum=0; for(i=1;i=10;i+) sum+=i; coutsum; C+程序设计34 程序示例:程序示例: 问题问题 任意输入若干个整数(不多于任意输入若干个整数(不多于50个),计算已输入整数之个),计算已输入整数之 和,直到输入了负数为止。和,直到输入了负数为止。 分析分析 若干个数累加求和。若干个数累加求和。 数的个数不确定,则构造标记控制的不确定循环。数的个数不确定,则构造标记控制的不确定循环。 用用break结束循环。结束循环。 实现实现 编写代码。编写代码。 流程控制语句流程控制语句 #include void main() int i,n
17、,sum; sum=0; for (i=1; i=50; i+) /限制最大循环次数限制最大循环次数 coutn; if (n0) break; /遇到标记立即结束循环遇到标记立即结束循环 sum += n; /累加累加 coutsum=sumendl; C+程序设计35 3.4.4 循环嵌套循环嵌套 循环可以使用两种方式组合循环可以使用两种方式组合 堆叠堆叠(stacking) 嵌套嵌套(nesting) (1) while() while() (2) while() while() . C+程序设计36 3.4.4 循环嵌套循环嵌套 三种循环可互相嵌套三种循环可互相嵌套 外层循环可包含两个
18、以上内循环,但不能相互交叉 层数不限 注意嵌套循环的跳转 从外层跳入内层 跳入同层的另一循环 向上跳转 (1) while() while() . (2) do do while( ); . while( ); (3) while() do while( ); . (4) for( ; ;) do while(); while() . 外循环外循环 两个内循环两个内循环 C+程序设计37 i10 cout 假假(0) 真真(非非0) i=1 j+ j=1 j10 真真(非非0) 假假(0) i+ for(i=1;i10;i+) for(j=1;j10;j+) couti*j; 外循环 内循环
19、分析嵌套的分析嵌套的forfor循环循环 思考? 外循环循环几次? 内循环循环几次? j=1;couti*j;各执行多少次? C+程序设计38 123456789 123456789 24681012141618 369121518212427 91827364554637281 . i J 例例: :循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表 1 2 3 9 for(int i=1;i10;i+) cout i; coutn- -n; C+程序设计39 例例: :循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表 123456789 123456789 24681012141618 36
20、9121518212427 91827364554637281 . i=1 J=1 for (int i=1;i10;i+) for(int j=1;j10;j+) cout“ ”i*j;if(j=9)coutn; i=2 i=3 i=9 J=2J=3J=4J=5J=6J=7J=8J=9 for (int i=1;i10;i+) for(int j=1;j10;j+) aij=i*j; C+程序设计40 #include void main() int i,j; for(i=1;i10;i+) cout i; coutn - -n; for(i=1;i10;i+) for(j=1;j10;j+
21、) if (i*j10) cout i*j; else cout i*j; if (j=9) coutn; 例例: :循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表 C+程序设计41 3.4.5 转向语句转向语句 2.break语句语句 功能:在循环语句和功能:在循环语句和switch语句中语句中,终止并跳出循环终止并跳出循环 体或开关体。体或开关体。 说明:说明: break只能终止并跳出最近一层的结构只能终止并跳出最近一层的结构 break不能用于循环语句和不能用于循环语句和switch语句之外的任何其它语语句之外的任何其它语 句之中句之中 Break在三种循环结构中的作用在三种循环结构
22、中的作用 Break在在switch结构中的作用结构中的作用 C+程序设计42 Break在三种循环结构中的作用在三种循环结构中的作用 expr break; 假(0) 真(非0) while do break; . expr 假(0) 真(非0) while expr2 break; . 假(0) 真(非0) for expr1 expr3 C+程序设计43 Break在在switch结构中的作用结构中的作用 switch expr 语句组1 break; 语句组2 break; 语句组n break; 语句组 break; . const 1const 2const ndefault ca
23、se C+程序设计44 3.4.5 转向语句转向语句 3.continue语句语句 功能:结束本次循环,跳过循环体中尚功能:结束本次循环,跳过循环体中尚 未执行的语句,进行下一次是否执行循未执行的语句,进行下一次是否执行循 环体的判断。环体的判断。 expr continue; 假(0) 真(非0) while 真(非0) do continue; . expr 假(0) while expr2 continue; . 假(0) 真(非0) for expr1 expr3 C+程序设计45 程序示例:程序示例: 问题问题 输出输出0100之间所有不能被之间所有不能被3整除的数。整除的数。 分析
24、分析 统计。统计。 循环次数已知,则构造确定循环。循环次数已知,则构造确定循环。 用用continue结束本次循环。结束本次循环。 流程控制语句流程控制语句 C+程序设计46 程序示例:程序示例: 实现实现 编写代码编写代码 流程控制语句流程控制语句 #include #include void main() int i, count=0; for (i=0; i=100; i+) if (i%3 = 0) continue; /提前结束本次循环提前结束本次循环 count+; /统计统计 coutsetw(5)i; if (count%8 = 0) coutendl; /输出输出8个数后换行
25、个数后换行 coutendl; C+程序设计47 小结小结 利用程序的三种结构即:顺序结构、选择结构和循环利用程序的三种结构即:顺序结构、选择结构和循环 结构可以实现对程序执行流程的控制。结构可以实现对程序执行流程的控制。 选择结构可使程序根据某个(些)条件是否成立,从而有选择结构可使程序根据某个(些)条件是否成立,从而有 选择的执行程序中的程序段,这可以利用选择的执行程序中的程序段,这可以利用if语句实现。语句实现。 循环结构可使某一段程序有条件地重复执行有限次,可利循环结构可使某一段程序有条件地重复执行有限次,可利 用用while、do-while和和for语句实现,并且这些语句可以通语句实现,并且这些语句可以通 过改变条件的形式进行相互转化。过改变条件的形式进行相互转化。 流程控制语句流程控制语句 C+程序设计48 练习与作业练习与作业 作业作业 第三章习题第三章习题 P 练习练习 1、将输入的整数反向显示。、将输入的整数反向显示。 2、若笼中的鸡和兔共有、若笼中的鸡和兔共有100只脚,求鸡和兔各有多少只。给只脚,求鸡和兔各有多少只。给 出所有可能的情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理-安全生产档案及管理制度
- 浙江杭州拱墅锦绣育才达标名校2025-2026学年初三下学期第五次月考数学试题含解析
- 浙江省东阳市2025-2026学年普通高中质量检测试题(二)数学试题含解析
- 2026年浙江省舟山市普陀区重点达标名校中考全国统考预测密卷物理试题试卷含解析
- 湖南省怀化市名校2025-2026学年初三5月中考信息卷物理试题含解析
- 安徽省合肥市庐江县汤池镇初级中学2026届初三下学期物理试题3月月考试卷含解析
- 安徽省合肥市包河区48中学2026届普通中考第一次模拟考试数学试题理试题含解析
- 脑梗死溶栓治疗的护理要点
- 江苏省江阴市要塞中学2025-2026学年初三期中检测试题数学试题试卷含解析
- 腹部手术患者出院指导与随访
- 基于PLC的混凝土搅拌站控制系统设计
- 药品经营和使用质量监督管理办法培训
- 2024年福建厦门航空招聘笔试参考题库附带答案详解
- 《仪表飞行课程》课件
- 角度测量-水平角测量误差与注意事项(水利水电工程测量课件)
- 工商管理专业 酒店业人力资源流动管理分析
- 外国文学史(下)-马工程
- 锚杆格构梁、锚杆板肋挡墙施工方案
- 住院医师大课-糖尿病病人的麻醉-罗贞
- LY/T 3263-2021澳洲坚果栽培技术规程
- HY/T 107-2017卷式反渗透膜元件测试方法
评论
0/150
提交评论