版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、22:15:131C + 程序设计教程(第二版)第二章 基本编程语句 Chapter 2 Basic Programming Statements清华大学出版社 钱 能22:15:132第二章内容说明语句说明语句 ( Declarative Statements ) 条件语句条件语句 (Condition Statements ) 循环语句循环语句 ( Loop Statements ) 循环设计循环设计(Loop Designs )输入输出语句输入输出语句( Input/Output Statements ) 转移语句转移语句 ( Move Statements ) 再做循环设计再做循环设计
2、(More Loop Designs ) 22:15:1331. 说明语句说明语句 ( Declarative Statements )n数据说明:n求解问题所使用的数据是什么性质,进行什么运算,表达范围如何,必须预先说明n说明方式: 既要指明其名字,也要指明其是什么类型,还可以顺便初始化如:n int a;n double d = 3.5;n说明数据的另一个目的是创建一个所需大小的实体空间给该名字,以便存储所用的数据值n若数据名字没有说明,使用其便是非法的22:15:134过程(函数)说明:求解中需要通过函数调用来实施求解时,便要对函数的性质进行说明,说明其返回类型,参数类型,参数个数函数说
3、明分函数声明和函数定义两种: 函数声明是说明函数的名字,函数的返回类型,以及函数的参数和个数如: double area(double ra); 函数定义是在函数声明的基础上,对整个实现过程进行详细定义如: double area(double ra) return ra*ra*3.14; 22:15:135调用函数就是使用函数名字,使用名字前必须清楚名字的性质,所以必须先对函数进行声明必须先对函数进行声明运行程序中,会涉及到被调用函数的执行,所以凡是被调用的函数都必须有函数定义,不管该定义在程序的什么位置如: double sphere(); / 声明 int main() double r
4、esult = sphere(); / 调用 cout“area: ”result“n”; void sphere() / 定义 coutr; return r*r*3.14; 22:15:136. 条件语句条件语句(Condition Statements )if语句的两种形态:语句1条件语句1条件语句2是是否否22:15:137对应语句: if(ab) coutaendl; if(a=b) coutaendl; else coutb0) if(x50) cout”x is ok.n”; else cout0) if(x 50) cout”OKn”; else cout0) if(x 50)
5、 cout”OKn”; else cout”NOT OKn”;22:15:139条件表达式:对于对于 if(x) a = 327981; else b = 327981;可表示为:可表示为: x ? a=327981 : b=327981;如果如果a和和b为同类型,则还可以:为同类型,则还可以: (x?a:b) = 327981;22:15:1310switch多分支语句: switch(整数表达式) case value1: 语句1; break; case value2: 语句2; break; default: 语句n; 等价于:等价于: if(整数表达式整数表达式=value1) 语句
6、语句1; else if(整数表达式整数表达式=value2) 语句语句2; else 语句语句n; 22:15:1311虽然switch有等价的复合if表示, 而且,分支判断值只能是整数,显得应用范围狭窄, 但是switch在使用上的直观和灵活形式, 使得其仍具有编程价值. 如:break可选,甚至case可以重叠: case value1: 语句1; case value2: 语句2; case v1: case v2: case v3: 语句;22:15:13123. 循环语句循环语句 ( Loop Statements )for循环结构: 开 始循环初始状态循环体状态修正条件判断未结束
7、结束结 束22:15:1313对应语句为:对应语句为: for(int i=1; i=10; i+) cout”hello.n”;循环初始状态条件判断状态修正循环体22:15:1314每次循环体执行,都改变循环状态,直每次循环体执行,都改变循环状态,直到条件不满足而终止到条件不满足而终止. .如,设置求和的初始值,交给循环计算,完如,设置求和的初始值,交给循环计算,完成循环后,输出求和结果:成循环后,输出求和结果:nint sum = 0;nfor(int i=1; i=100; i+)nn sum = sum+i;nncoutsumendl;循环开始循环结束22:15:1315因为并不是所有
8、循环都有明显的循环初因为并不是所有循环都有明显的循环初始状态和状态修正的,所以,始状态和状态修正的,所以,whilewhile循环是一种循环是一种forfor循环的简洁形式循环的简洁形式. .如,同样的求和:如,同样的求和:nint sum=0, i=1;nwhile(i=100)n sum += i+;ncoutsumendl;循环开始循环结束22:15:13164. 循环设计循环设计 ( Loop Designs )(1)简单字符图形的双重循环MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM22:15:1317分析方法:该图形一
9、共10行,每一行增加一个字符,所以,应循环10次,每次输出一行,其循环模式为:for(int i=1; i=10; +i) 输出第i行(循环) 换行n行 i M个数n 1 1 1n 2 2 2n 3 3 3n 4 4 4n.n10 10 1022:15:1318for(int i=1; i=10; +i) for(int j=1; j=i; +j) cout”M”; coutendl;22:15:1319(2)判断素数:(利用数学定律)nmij 假定ij, n则 i2ijmj2 n即 i2mj2 n即 imj bool isPrime(int m) double sqm=sqrt(m*1.0)
10、; for(int i=2; i=sqm; +i) if(m%i=0) return false; return true; 22:15:13205. 输入输出语句输入输出语句( Input/Output Statements )-p46 1、标准输出流:可以控制输出格式ncoutshowpos12; / +12ncouthex18” “showbase18; / 12 0 x12ncouthex255” “uppercase255; / ff FFncout123.0” “showpoint123.0; / 123 123.000ncout3)” “boolalpha3); / 0 fals
11、encoutfixed12345.678; / 12345.678000ncoutscientific123456.678; / 1.234568e+052、有参数的三个常用流状态nWidth(int) /设置显示宽度nfill(char) /设置填充字符nPrecision (int) /设置有效位数或精度22:15:132122:15:1322控制宽度和填充字符的操作是带参数的,注意注意width(n)为一次性操作,即第二次显示时将不再有效。默认为width(0),表示仅显示数值。例如:ncout.width(5);ncout.fill(S);ncout2323; / 输出: SSS232
12、3在头文件iomanip的支持下,还可以直接由操作:n#includenncoutsetw(6)setfill($)27endl; / 输出: $273、文件流n输入方式打开文件:Ifstream fin(filename, openmode=ios:in);n输出方式打开文件:ofstream fout(filename, openmode=ios:out); 注注: fin和fout是文件流名称;filename是 外部文件名,如磁盘文件;openmode 是打开方式。22:15:1323文件流类型名22:15:1324文件流的输入出操作与标准输入出基本相同,只是需要以一定方式打开和关闭.
13、如,将文件a.in打开,逐行读入字符,输出到文件a.out:n ifstream in(“a.in”);n ofstream out(“a.out”);n for(string s; getline(in, s); )n outsendl;其中文件流读入操作总是伴随着状态返回,判断状态就可以确定文件是否正常读入,如getline(in,s)当读到文件尾时,便返回false,以使循环结束22:15:1325. 转移语句转移语句 ( Move Statements ) break除了用在switch之外,主要的是用在终结本次循环for(int i; ; ) for( ; ; ) / . if(i=
14、1) break; / . a=1; / .break跳到此处22:15:1426ncontinue一般是用条件判断执行的,通过反条件,可以免去continue的使用,所以,它用来构筑良好的程序风格 for(int n=100; n=200; +n) if(n%3=0) continue; coutnendl; n免去continuecontinue的情形: for(int n=100; n=200; +n) if(n%3!=0) coutnendl; 22:15:1427ngoto的程序段除了系统跟踪和架构困难外,阅读也相对复杂: int a; goto Init; Forward: a =
15、 a + 1; Print: coutaendl; goto Down; Init: a = 1; goto Print; Down: if(a100) goto Forward;n等价于: for(int i=1; i=100; +i) couti“n”;22:15:1428nbreak语句的可取之处:/ 用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;/ goto语句的代码段for(int i=1; i100; +i)for(int j=1; j100; +j) if(i*j=651) goto End; / .End:22:15:14297. 再做循环设计再做循环设计( More Loop Designs ) n逻辑判断类的语句控制结构: for(所有可能情况) / 可为多重循环 if(条件1不满足) continue; if(条件2不满足) continue; / if(条件n不满足) continue; 输出所要的结果 22:15:1430百鸡问题的例子:p55 for(int c=1; c=13; +c) for(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025农业劳务雇佣合同
- 2025特许加盟合同模板
- 投资策略优化洞察分析-洞察分析
- 商务酒店出租合同
- 家具采购委托居间合同
- 2025年度文化演艺项目投资与合作合同模板2篇
- 2024版融资租赁售后回租合同
- 2025年度新型材料车间租赁合同4篇
- 2025年度住宅小区车位租赁与社区养老服务中心合同4篇
- 2025年度智慧社区物业管理合同书4篇
- 2024年建筑业10项新技术
- 语文七年级下字帖打印版
- DB11-T 641-2018 住宅工程质量保修规程
- (完整版)坏死性筋膜炎PPT资料课件
- 谈基层税务干部队伍建设难点及应对经验
- 卫星的坐标计算
- 外国人来华工作许可申请表
- DVPR设计验证计划和报告
- 湿式电除尘器使用说明书
- 中国跆拳道考级申请表(共1页)
- 二年级上册音乐课件---选唱歌曲-我们和祖国最亲亲-西师大版(共8张PPT)
评论
0/150
提交评论