版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10:16:12,1,C + 程序设计教程(第二版),第二章 基本编程语句 Chapter 2 Basic Programming Statements,清华大学出版社 钱 能,第二章内容,10:16:12,2,说明语句 ( Declarative Statements ) 条件语句 (Condition Statements ) 循环语句 ( Loop Statements ) 循环设计(Loop Designs ) 输入输出语句( Input/Output Statements ) 转移语句 ( Move Statements ) 再做循环设计(More Loop Designs ),1.
2、 说明语句 ( Declarative Statements ),数据说明: 求解问题所使用的数据是什么性质,进行什么运算,表达范围如何,必须预先说明 说明方式: 既要指明其名字,也要指明其是什么类型,还可以顺便初始化如: int a; double d = 3.5; 说明数据的另一个目的是创建一个所需大小的实体空间给该名字,以便存储所用的数据值 若数据名字没有说明,使用其便是非法的,10:16:12,3,过程(函数)说明:求解中需要通过函数调用来实施求解时,便要对函数的性质进行说明,说明其返回类型,参数类型,参数个数函数说明分函数声明和函数定义两种: 函数声明是说明函数的名字,函数的返回类型
3、,以及函数的参数和个数如: double area(double ra); 函数定义是在函数声明的基础上,对整个实现过程进行详细定义如: double area(double ra) return ra*ra*3.14; ,10:16:12,4,调用函数就是使用函数名字,使用名字前必须清楚名字的性质,所以必须先对函数进行声明运行程序中,会涉及到被调用函数的执行,所以凡是被调用的函数都必须有函数定义,不管该定义在程序的什么位置如: double sphere(); / 声明 int main() double result = sphere(); / 调用 coutr; return r*r*3
4、.14; ,10:16:12,5,. 条件语句(Condition Statements ),if语句的两种形态:,10:16:12,6,语句1,条件,语句1,条件,语句2,是,是,否,否,对应语句: if(ab) coutaendl; if(a=b) coutaendl; else coutbendl;,10:16:12,7,10:16:12,8,错综复杂时,必须注意两义性: if(x0) if(x50) cout”x is ok.n”; else cout”x is not ok.n”;,正解:else从属于紧挨的if if(x0) if(x 50) cout”OKn”; else cou
5、t”NOT OKn”; ,误解:else从属于外面的if if(x0) if(x 50) cout”OKn”; else cout”NOT OKn”;,10:16:12,9,条件表达式: 对于 if(x) a = 327981; else b = 327981; 可表示为: x ? a=327981 : b=327981; 如果a和b为同类型,则还可以: (x?a:b) = 327981;,10:16:12,10,switch多分支语句: switch(整数表达式) case value1: 语句1; break; case value2: 语句2; break; default: 语句n;
6、等价于: if(整数表达式=value1) 语句1; else if(整数表达式=value2) 语句2; else 语句n; ,10:16:12,11,虽然switch有等价的复合if表示, 而且,分支判断值只能是整数,显得应用范围狭窄, 但是switch在使用上的直观和灵活形式, 使得其仍具有编程价值. 如: break可选,甚至case可以重叠: case value1: 语句1; case value2: 语句2; case v1: case v2: case v3: 语句;,3. 循环语句 ( Loop Statements ),for循环结构:,10:16:12,12,对应语句为:
7、 for(int i=1; i=10; i+) cout”hello.n”;,10:16:12,13,循环初始状态,条件判断,状态修正,循环体,每次循环体执行,都改变循环状态,直到条件不满足而终止. 如,设置求和的初始值,交给循环计算,完成循环后,输出求和结果: int sum = 0; for(int i=1; i=100; i+) sum = sum+i; coutsumendl;,10:16:12,14,循环开始,循环结束,因为并不是所有循环都有明显的循环初始状态和状态修正的,所以,while循环是一种for循环的简洁形式. 如,同样的求和: int sum=0, i=1; while(
8、i=100) sum += i+; coutsumendl;,10:16:12,15,循环开始,循环结束,4. 循环设计 ( Loop Designs ),(1)简单字符图形的双重循环 M MM MMM MMMM MMMMM MMMMMM MMMMMMM MMMMMMMM MMMMMMMMM MMMMMMMMMM,10:16:12,16,分析方法: 该图形一共10行,每一行增加一个字符,所以,应循环10次,每次输出一行,其循环模式为: for(int i=1; i=10; +i) 输出第i行(循环) 换行 行 i M个数 1 1 1 2 2 2 3 3 3 4 4 4 . 10 10 10,1
9、0:16:12,17,for(int i=1; i=10; +i) for(int j=1; j=i; +j) cout”M”; coutendl; ,10:16:12,18,(2)判断素数:(利用数学定律) mij 假定ij, 则 i2ijmj2 即 i2mj2 即 imj bool isPrime(int m) double sqm=sqrt(m*1.0); for(int i=2; i=sqm; +i) if(m%i=0) return false; return true; ,10:16:12,19,5. 输入输出语句( Input/Output Statements ),标准输出流:
10、 可以控制输出格式 cout3)3); / 0 false coutfixed12345.678; / 12345.678000 coutscientific123456.678; / 1.234568e+05,10:16:12,20,控制宽度和填充字符的操作是带参数的,注意width(n)为一次性操作,即第二次显示时将不再有效。默认为width(0),表示仅显示数值。例如: cout.width(5); cout.fill(S); cout coutsetw(6)setfill($)27endl; / 输出: $27,10:16:12,21,文件流的输入出操作与标准输入出基本相同,只是需要以
11、一定方式打开和关闭 如,将文件a.in打开,逐行读入字符,输出到文件a.out: ifstream in(“a.in”); ofstream out(“a.out”); for(string s; getline(in, s); ) outsendl; 其中文件流读入操作总是伴随着状态返回,判断状态就可以确定文件是否正常读入,如getline(in,s)当读到文件尾时,便返回false,以使循环结束,10:16:12,22,. 转移语句 ( Move Statements ),break除了用在switch之外,主要的是用在终结本次循环 for(int i; ; ) for( ; ; ) /
12、. if(i=1) break; / . a=1; / . ,10:16:12,23,break跳到此处,continue一般是用条件判断执行的,通过反条件,可以免去continue的使用,所以,它用来构筑良好的程序风格 for(int n=100; n=200; +n) if(n%3=0) continue; coutnendl; 免去continue的情形: for(int n=100; n=200; +n) if(n%3!=0) coutnendl;,10:16:12,24,goto的程序段除了系统跟踪和架构困难外,阅读也相对复杂: int a; goto Init; Forward:
13、a = a + 1; Print: coutaendl; goto Down; Init: a = 1; goto Print; Down: if(a100) goto Forward; 等价于: for(int i=1; i=100; +i) couti“n”;,10:16:12,25,break语句的可取之处: / 用break语句的代码段 bool flag=false; / 用于做退出记号 for(int i=1; i100; +i) for(int j=1; j100; +j) if(i*j=651) flag=true; break; else / . if(flag) break
14、; / goto语句的代码段 for(int i=1; i100; +i) for(int j=1; j100; +j) if(i*j=651) goto End; / . End:,10:16:12,26,7. 再做循环设计( More Loop Designs ),逻辑判断类的语句控制结构: for(所有可能情况) / 可为多重循环 if(条件1不满足) continue; if(条件2不满足) continue; / if(条件n不满足) continue; 输出所要的结果 ,10:16:12,27,百鸡百钱问题:雄鸡7元一只,母鸡5元一只,小鸡1元三只。花100元钱,买100只鸡,如果雄鸡、母鸡和小鸡都必需有,则雄鸡、母鸡和小鸡应各买几只?,10:16:12,28,百鸡问题的例子: for(int c=1; c=13; +c) for(int h=1; h=18; +h) for(int s=1; s=96; +s) if(7*c+5*h+s/3-100) continue; if(c+h+s-100) continue; if(s%3) continue; coutCock:c , Hens:h , Chicks:100-c-hendl; ,10:16:12,29,级数逼近问题前后项之差与0的邻域(精度要求)的比较作为循环
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年成都新高考化学全程复习规划与核心考点指南
- 2026丰县辅警面试题及答案
- 2026高新区国企面试题及答案
- 2026海外中心面试题及答案解析
- 2026年浙江政治高三试题及答案
- 公务员山东试题及答案
- 管材拉伸试题及答案
- 窑洞混凝土施工方案
- 路面施工围挡施工方案
- 社区康复护理并发症预防
- GB/T 14845-2026板式换热器用钛板
- 2026年硫化氢培训考试复习题练习卷含答案
- 2026国家国防科技工业局安全工程技术与合作交流中心招聘笔试参考题库及答案详解
- 潞安化工集团有限公司招聘题库
- 六年级下数学小升初数学每日一练
- 停车场场地平整及混凝土路面施工方案
- 重庆南岸区2026年九年级质量监测英语试卷试题(含答案详解)
- 精神科心理治疗应用课件
- 2026年卫生高级职称面审答辩(中医针灸科)副高面审经典试题及答案
- 2026年浙大附中 分班考试试题及答案
- 2026年深圳市盐田港集团有限公司校园招聘笔试参考试题及答案解析
评论
0/150
提交评论