版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第三章第三章基本控制结构 if语句 switch语句 while语句 do-while语句 for语句 循环不变式 2 3.1 程序的基本控制结构 3.1.1 c+语言的简单语句 o 单语句单语句:以分号:以分号“;”结束结束 n int a;变量定义语句变量定义语句 n a=3*2;表达式语句表达式语句 n function(“example”);函数调用语句函数调用语句 o 空语句空语句:只有一个分号:只有一个分号“;” o 复合语句复合语句(块语句块语句) n 用花括号用花括号 括起来的若干条语句(可以是单语句、括起来的若干条语句(可以是单语句、 空语句、其他块语句)空语句、其他块语
2、句) n 块语句在语法上等价于一个单语句,所以在单语句块语句在语法上等价于一个单语句,所以在单语句 可用的地方我们也可以使用块语句。可用的地方我们也可以使用块语句。 n 块语句中每一个语句都以分号块语句中每一个语句都以分号“;”结束,块语句本结束,块语句本 身则以右花括号身则以右花括号“ ”结束结束 3 if(ab) int t=a; a=b; b=t; 3.1.1 c+语言的简单语句 4 3.1.2单入口单出口控制结构 实现单入口单出口程序只需三种基本的控制结构实现单入口单出口程序只需三种基本的控制结构 o 顺序结构顺序结构 o 选择结构选择结构 n 当条件当条件p(条件表达式条件表达式)成
3、立,则执行一个分支,否则执行成立,则执行一个分支,否则执行 另一个分支另一个分支 n 多路分支多路分支 o 循环结构循环结构 n 实现反复执行某一部分的操作实现反复执行某一部分的操作 n 循环结构三要素:循环结构三要素: o 循环条件循环条件p o 循环体循环体a o 循环变量循环变量:在每次循环中都必须有语句修改此变量的值,以使循:在每次循环中都必须有语句修改此变量的值,以使循 环条件表达式的值可能改变,从而跳出循环环条件表达式的值可能改变,从而跳出循环 p a n y 5 3.1.3 结构化程序设计工具 o 程序框图程序框图 o 结构化程序设计图形工具结构化程序设计图形工具 n n_s图图
4、 n pad图图 n jackson结构图结构图 n warnier图图 o pdl(program design language) 6 3.2 选择结构 3.2.1 if 语句 oif (条件表达式条件表达式) 子语句;子语句; n if语句的有效范围是单个语句,如果子语句有多 个语句,则必须用括起来,成为一个复合语句 o if (条件表达式条件表达式)子语句子语句1; else 子语句子语句2; 7 例例3.2.1 输入输入24小时制的时间,转换并输出小时制的时间,转换并输出12小时制的时间并注小时制的时间并注 明是上午还是下午(上午用明是上午还是下午(上午用a.m表示,下午用表示,下午
5、用p.m表示)表示) #include main() int hour; char noon = a; cout hour; if (hour 12) hour = hour - 12; noon = p; cout the hour is hour noon 12) hour = hour - 12; noon = p; “noon = p;”不是if的 子语句,而是主流程if语句 的下一个顺序语句 8 程序程序2:程序程序3: #include void main() float x; coutx; if (x12) cout p.m: ; x=x-12; else cout a.m: ;
6、 coutxn; (改进改进) #include void main() float x; coutx; if(x=12) cout a.m: ; else cout p.m: ; x=x-12; coutxn; /注意书写层次结构注意书写层次结构 9 例3.2.2 一个具有输入合法性检测的程序,要求用户输入的工龄 在047之间,如果超出此范围则提示输入错误,否则才接受用户 输入。用户输入错误时,程序用转义字符输出一声响铃 main() int standing;/ 用户输入的工龄用户输入的工龄 float standing_salary;/ 根据用户输入工龄计算出来的工龄工资根据用户输入工龄
7、计算出来的工龄工资 cout standing; if (standing = 0) cout input accepted. your standing salary is standing_salary n; else standing_salary = 0; cout invalid input.x07n; 10 嵌套if语句 1) if (表达式表达式1) if (表达式表达式2)子语句子语句1; else子语句子语句2; else 子语句子语句3; 2) if (表达式表达式1)子语句子语句1; else if (表达式表达式2)子语句子语句2; else if (表达式表达式n)子
8、语句子语句n; else 子语句子语句n1; 11 例例3.2.3 从键盘上输入从键盘上输入3个数个数a,b,c,求出三数中最大者并输出求出三数中最大者并输出 。 #include void main() int a,b,c,max; coutabc; max = a; if (bmax) max = b; / 求出求出a、b中的较中的较 /大值,记录在大值,记录在max中,然后再比较中,然后再比较c与与max if (cmax) max = c; cout max(a,b,c): max b) if (a c) coutmaximum is a ; else coutmaximum is c
9、) coutmaximum is b ; else coutmaximum is c) coutc”; c = a+b; else cout“a+b=c”; 15 程序程序3.2.4 /程序:程序:average.cpp /功能:求数、理、化三科平均成绩的总评,演示功能:求数、理、化三科平均成绩的总评,演示if语句嵌套的缩进格式语句嵌套的缩进格式 #include void main() int math,phys,chem; int average; float scholarship; coutmathphyschem; average=(math+phys+chem)/3.0+0,5;
10、/why? if(average=90) cout=80) cout=70) cout=60) cout pass.n; scholarship=45.50; else cout fail.n; scholarship=0.00; coutyour scholarship is scholarship800.00) = if(members!=0) if (income/members800.00) expression1 break; case 常量表达式常量表达式2:语句序列语句序列2; break; case 常量表达式常量表达式n:语句序列语句序列n; break; default:语
11、句序列语句序列n + 1; break; 19 说明 o 表达式可为任何类型。表达式可为任何类型。switch在入口时判断表达式与哪在入口时判断表达式与哪 个常量表达式匹配。若个常量表达式匹配。若表达式的值与某个表达式的值与某个casecase后面的常后面的常 量相等,则执行与该量相等,则执行与该casecase后面相应的语句;若与所有列后面相应的语句;若与所有列 出的常量都不相等,则执行出的常量都不相等,则执行defaultdefault后面的语句。后面的语句。 o case后只能是常量表达式,不能是变量表达式,其值只后只能是常量表达式,不能是变量表达式,其值只 能是整型、字符型、枚举型,不
12、能是其他类型。每个常能是整型、字符型、枚举型,不能是其他类型。每个常 量表达式的值都不相同。量表达式的值都不相同。 o case部分与部分与default部分出现次序不影响执行结果。每部部分出现次序不影响执行结果。每部 分不限单个语句,可写多个语句,不用加分不限单个语句,可写多个语句,不用加 。 o break;语句用于执行完一个分支后跳出此语句用于执行完一个分支后跳出此switch语句语句 20 例例3.2.6 #include main() int choice;/ 用户输入的选择用户输入的选择 cout 1.applen; / 给出选择菜单给出选择菜单 cout 2.pearn; cou
13、t 3.bananan; cout 4.orangen; cout choice; / 用户输入选择用户输入选择 switch (choice) / 对用户的选择分别作处理对用户的选择分别作处理 case 1:cout your choice is apple.n; case 2:cout your choice is pear.n; case 3:cout your choice is banana.n; case 4:cout your choice is orange.n; default: cout you did not make a choice.n; break; break;
14、break; break; break; 21 例例3.2.7 /程序:程序:orders.cpp /功能:旅行社订票折扣率计算功能:旅行社订票折扣率计算 #include void main() int orders, fragment; float discount; coutorders; fragment=orders/10; switch(fragment) case 0: discount=0.10; break; case 1: discount=0.15; break; case 2: discount=0.30; break; default: discount =0.45;
15、 break; coutthe discount is discount*100%.n; 22 3.3 循环结构循环结构 3.3.1 while语句语句 o while (循环条件表达式循环条件表达式) 循环体语句循环体语句; o 当表达式的值为当表达式的值为t(非零非零)时,循环条件成立,执行循时,循环条件成立,执行循 环体语句。环体语句。 o while语句的作用范围只到语句的作用范围只到while后第一个分号(单语后第一个分号(单语 句)。若循环体有多个语句则需用句)。若循环体有多个语句则需用 括起来。括起来。 o 在循环体中应有使循环趋向于结束的语句在循环体中应有使循环趋向于结束的语句
16、 o 循环变量初始化需在循环变量初始化需在while语句前完成语句前完成 23 例3.3.1:给定一个正整数给定一个正整数n,求出平方值不超过求出平方值不超过n的最大正整的最大正整 数并输出。数并输出。 程序流 程图如 右: 24 源程序: #include main() int n;/ 用户给定的正整数用户给定的正整数 int max;/ 所求的最大整数所求的最大整数 cout n;/ 判断用户输入是否合法判断用户输入是否合法 if (n = 0) cout input error!n; else / 利用循环求出平方大于利用循环求出平方大于n的最小整数的最小整数 max = 1; whil
17、e (max * max = n) max = max + 1; / 输出结果输出结果 cout the maximum integer is: max - 1 n; 25 例例3.3.2 #include void main() int choice=1;/ 用户输入的选择用户输入的选择 while(choice!=0) cout 1.applen; / 给出选择菜单给出选择菜单 cout 2.pearn; cout 3.bananan; cout 4.orangen; cout 0.exitn; cout choice; / 用户输入选择用户输入选择 switch (choice) / 对
18、用户的选择分别作处理对用户的选择分别作处理 case 0: break; case 1:cout your choice is apple.n; break; case 2:cout your choice is pear.n; break; case 3:cout your choice is banana.n; break; case 4:cout your choice is orange.n; break; default:cout your choice is invalid.n; break; cout thank you for your choice.n; 26 3.3.2 d
19、o-while语句语句 o do 循环体语句循环体语句; while (循环条件表达式循环条件表达式p); o 先执行一次循环体语句,然后判别表达式,当为先执行一次循环体语句,然后判别表达式,当为t时,时, 返回执行循环体语句,直到表达式为返回执行循环体语句,直到表达式为f,结束循环结束循环 o while语句和语句和do-while语句基本等价,只有当表达式一开语句基本等价,只有当表达式一开 始就为假时,两种语句结果不一样始就为假时,两种语句结果不一样 i=20; sum=0; i=20; sum=0; while (i=10)do sum += i ; sum += i ; i+; i+;
20、 while (i=10); 结果结果 sum=0结果结果 sum=20 27 3.3.2 do-while语句语句 /程序:程序:sqrt.cpp /功能:利用牛顿法求一个正数的平方根功能:利用牛顿法求一个正数的平方根 #include void main() const float eps=1e-5; float num, root, pre; coutnum; if(num0) couteps)|(root-preeps); cout the rootof num is rootendl; 28 3.3.3 for语句语句 ofor (表达式表达式1; 表达式表达式2; 表达式表达式3)
21、 循环体语句循环体语句; o执行过程: 1)求解表达式1 2)求解表达式2, 若其值为t,执行循环体语句,跳到第3)步; 若为f,结束循环,跳到第4)步 3)求解表达式3,然后跳到第2)步 4)循环结束,执行for语句的下一条语句 o适用于循环次数已知的循环 n表达式1:循环变量赋初值 n表达式2:循环条件 n表达式3:循环变量增量(计数表达式) 29 for语句中的三个表达式中任一个或全部均可省略,但分号必须保留语句中的三个表达式中任一个或全部均可省略,但分号必须保留 1)sum=0; for (i=1; i=100; i+) sum += i; 2)sum=0; i=1; for (; i
22、100) break; sum += i; 4)sum=0; for (i=1; i=100; ) sum += i; i+; 5)sum=0; i=1; for (; i100) break; sum += i; i+; 7)for (sum=0,i=1; i=100 ; i+) sum += i; while (i=100) while (1) 30 程序程序3.3.4 /程序:程序:alphabet.cpp /功能:正反向打印字母表。功能:正反向打印字母表。 #include void main() char ch; for(ch=a; ch=z; ch+) coutch; cout=a
23、; ch-) coutch; coutendl; 31 程序程序3.3.5 /程序程序: temptab.cpp /功能:打印摄氏温度与华氏温度对照表功能:打印摄氏温度与华氏温度对照表 #include void main() const int max=10; const int min=-5; int cel; float fah; / 输出对照表栏目输出对照表栏目 coutcelsiusx09fahrenheit=min;cel-) fah=cel*1.8+32; coutcelx09fahendl; 32 3.3.4 循环的嵌套 o 三种循环可以相互替代 o 一个循环体内又包含另一个完
24、整的循环结构 循环的嵌套 o 各种循环可以相互嵌套 33 3.3.4 循环的嵌套 /程序程序: multitab.cpp /功能:打印乘法口诀表功能:打印乘法口诀表 #include void main() int i,j; for(i=1; i=9; i+) for(j=1; j=i; j+) couti*j=i*j ; coutendl; 34 程序程序3.3.6 公鸡公鸡5元元1只,母鸡只,母鸡3元元1只,小鸡只,小鸡1元元3只,花了只,花了100元钱元钱 买买100只鸡,问公鸡、母鸡、小鸡各多少只?只鸡,问公鸡、母鸡、小鸡各多少只? cock公鸡的个数;公鸡的个数;hen母鸡的个数;母
25、鸡的个数;chicken小鸡的个数;得方程:小鸡的个数;得方程: cock+hen+chicken = 100 5*cock + 3*hen + chicken/3 =100 #include void main() int cock, hen, chicken ; for (cock=0; cock=100/5; cock+) for (hen=0; hen=100/3; hen+) chicken = 100 - cock - hen ; if (chicken%3=0) 运行结果: cock=0 hen=25 chicken=75 cock=4 hen=18 chicken=78 coc
26、k=8 hen=11 chicken=81 cock=12 hen=4 chicken=84 20 33 35 3.3.5 设计正确的循环 循环不变式循环不变式 o 一个或者多个表达式 o 用于保证循环的正确性 o 在循环前成立 在每次执行循环体后仍成立 在循环结束后也成立 36 3.4 转向语句 转向语句转向语句一般形式一般形式功能描述功能描述例子例子 break语句语句 break; 1.用于用于switch语句,使流程语句,使流程 跳出跳出switch结构,继续执行结构,继续执行 下一个语句下一个语句 2.用于循环语句用于循环语句(while, do- while, for) 3.除此之
27、外,不能用于其他除此之外,不能用于其他 任何语句任何语句 for () if () break; a=1; continue语语 句句 continue; 结束本次循环,即跳过循结束本次循环,即跳过循 环体中下面尚未执行的语句环体中下面尚未执行的语句 ,而接着进行下一次循环的,而接着进行下一次循环的 判断。判断。 for () if () continue; a=1; return语句语句 return 表达式表达式; 结束被调用函数,转向主结束被调用函数,转向主 调函数原处的下一条语句,调函数原处的下一条语句, 将表达式结果送回主调函数将表达式结果送回主调函数 37 例3.4.1(break
28、的用法) 键盘输入m和n(10mn32000),求出mn间所有素数且按每行8个 数形式输出 #include #include #include void main() int m,n,x,k,i,j; j=0;/j计算输出个数计算输出个数 do coutnenter m,n(10mnmn; while(m=n)|(n=32000) ; coutn*n; 38 for(x=m; x=n; x+) /对对mn的数判别的数判别 k=sqrt(x); for (i=2; i=k+1) /不是用不是用break跳出的,找到一个素数跳出的,找到一个素数 if (j%8=0) coutendl;/每行每行
29、8个数个数 coutsetw(8)x; j=j+1; /以每行以每行8个数的形式输出,每个数占个数的形式输出,每个数占8个字符的位个字符的位 置置 coutn*n; 39 例3.4.2(continue的用法) 在键盘上输入若干个正数,累加求和,最后输出累加和以及平均值。在键盘上输入若干个正数,累加求和,最后输出累加和以及平均值。 o 问题分析:问题分析: n 事先不知道要输入多少个数,但知道输事先不知道要输入多少个数,但知道输 入数是正数,我们可边输入边统计其个入数是正数,我们可边输入边统计其个 数,若发现输入的是数,若发现输入的是0或负数时,输入或负数时,输入 结束。当输入数是大于结束。当输入数是大于0时则累加并累时则累加并累 计数的个数。计数的个数。 40 源程序如下:源程序如下: #include void main() double sum,num;int n; sum=0.0;n=0;num=1.0;/设置初值设置初值 while (num0) coutnum; if (num=0) continue; sum=sum+num; n=n+1; coutnthe total i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度铁路旅客运输旅客列车卫生防疫合同3篇
- 二零二五年度班组安全员安全生产事故调查处理合同2篇
- 重庆幼儿师范高等专科学校《中学代数研究与教学》2023-2024学年第一学期期末试卷
- 湖南中医药大学湘杏学院《英语听力(5)》2023-2024学年第一学期期末试卷
- 2024版标准化配电室工程承包协议版B版
- 2024版家居产品买卖协议
- 二零二五年度服装电商品牌联合营销推广合同2篇
- 2025版企业兼职劳动合同范本合同模板3篇
- 二零二五年度短视频美食制作与拍摄合同2篇
- 2024版高收益投资合同3篇
- 体育场拱架施工吊装和拆撑卸载验算方案
- 正常胃镜报告单范文
- 翻译技术实践智慧树知到期末考试答案章节答案2024年山东师范大学
- GJB9001C:2017风险管理计划
- 2024年湖南省长沙市长郡教育集团中考三模数学试题
- HG/T 6312-2024 化工园区竞争力评价导则(正式版)
- 2024时事政治试题库学生专用
- RFJ 006-2021 RFP型人防过滤吸收器制造与验收规范(暂行)
- 电子行业认证行业深度研究报告
- 2022年10月自考00318公共政策试题及答案含解析
- 人力资源管理程序(含流程图)
评论
0/150
提交评论