版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第4章 程序的控制结构,2,内容提要,基本控制结构 基本控制语句,3,构成程序的三种基本结构,顺序结构 选择结构 循环结构 已经证明,任何程序均可只用这三种结构综合描述,只用这三种结构编制的程序,叫结构化程序,4,顺序结构,顺序结构是一种最简单、最基本的结构,其特点是完全按照语句出现的先后次序执行程序。它由A和B两个语句块组成,且仅有一个入口()和一个出口()。最简单的情况是每一语句块中只含有一条不产生控制转移的执行语句。,5,顺序结构程序举例,例 4.3编程计算ax2+bx+c=0的根,a,b,c由键盘输入,假设b2-4ac0. #include #include main() floa
2、t a,b,c,disc,x1,x2,p,q; printf(“Please enter the coefficients a,b,c:”); scanf(%f,%f,%f, 教材83页,Please enter the coefficients a,b,c :,2,6,1,x1=-0.1771,x2=-2.8229,6,选择结构,该结构的作用是根据所选定的条件是否满足,决定从给定的两组或多组操作选择其一. 在c语言中,实现选择结构的语句有if语句和switch语句,教材84页,7,if 语句 三种形式,1. 形式之一 if ( 表达式) 语句1; 语句作用: 如果表达式为真,执行语句1;否则
3、什么都不做 注意: 语句1,只一句,8,例4.4 从键盘输入你和你的朋友的年龄,编程判断谁的年龄大,并打印最大者的年龄(算法一 教材86页),程序见 示例程序.DOC,9,if 语句 三种形式,2. 形式之二 if ( 表达式) 语句1 ; else 语句2; 语句作用: 如果表达式为真,执行语句1;否则执行语句2,10,例4.4 从键盘输入你和你的朋友的年龄,编程判断谁的年龄大,并打印最大者的年龄(算法二 教材87页),程序见 示例程序.DOC,11,if 语句 三种形式,3. 形式之三 层叠的else-if 语句(多分支语句) if ( 表达式1) 语句1; else if (表达式2)
4、语句2; else if (表达式m) 语句m; else 语句m+1; 语句作用: 如果表达式1为真,执行语句1;否则如果表达式2为真,执行语句2;否则如果表达式3为真,执行语句3;否则,,如果表达式m为真,执行语句m,否则执行语句m+1。,12,if 语句 三种形式,图4-9 当m=3时多分支选择结构流程图,13,例4.6:猜数游戏,先由计算机“想”一个数请人猜,如果人猜对了,则计算机给出提示:“Right!”, 否则提示:“Wrong!”,并告诉人所猜的数是大还是小。 教材93页,14,猜数游戏算法流程图,15,猜数游戏用到的库函数,怎样模拟计算机“想”一个数呢? 随机函数rand(),
5、在stdlib.h中定义 产生0,RAND_MAX 之间的随机数 magic = rand(); RAND_MAX,不大于双字节整数的最大值32767,程序见 示例程序.DOC,16,一般形式 switch (表达式) case 常量表达式 1:语句1 case 常量表达式 2:语句2 case 常量表达式 n:语句n default : 语句n+1 ,switch 语句,语句作用: 我们称常量表达式值为入口标号,当表达式的值与case中常量表达式值匹配时,即顺序执行相应的一个或多个语句。,教材95页,17,switch 语句示例程序,编程实现五分制成绩转换成百分制成绩 即输入:A 输出:90
6、-100 B :80-90 C :70-80 D : 60-70 E :60,18,#include stdio.h main() char grade; grade=getchar(); switch(grade) case A: printf(“90100n); break; case B: printf(“8090n); break; case C: printf(“7080n); break; case D: printf(“60-70n); break case E: printf(60n); break; default: printf(input errorn); ,结果: 输入
7、:B 输出:8090,19,#include stdio.h main() char grade; grade=getchar(); switch(grade) case A: printf(“90100n); case B: printf(“8090n); case C: printf(“7080n); case D: printf(“6070n); case E: printf(60n); default: printf(input errorn); ,结果: 输入:B 输出: 8090 7080 6070 60 input error,原因是什么呢?见教材95-96页5点说明,20,例4
8、.8:计算器程序,编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 然后,计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/),(教材98页),自学,21,条件表达式,一般形式: 表达式1?表达式2:表达式3 执行顺序: 先求解表达式1, 若值为非0,则求解表达式2,表达式2的值为最终结果; 若值为0,则求解表达式3,表达式3的值为最终结果。,自学,(教材88页),22,循环结构,什么是循环?循环是程序中重复执行,直到满足指定条件才停止的一段代码. 循环结构是程序中一种很重要的结构。 特点: 在给定条件成立时,反复执行某程序段,直到
9、条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。,(教材100页),23,实现循环结构的 3 种循环语句,多 功 能,当型循环 先判断后执行,直到型循环 先执行后判断,24,While语句,一般形式: while (表达式) 循环体语句; 执行顺序 (1)判断表达式(循环条件)的值, (2)表达式为真(非0)时,执行循环体语句,循环体语句执行结束,返回(1) 表达式为假(0)时,循环结束,退出循环,执行下一条语句,(教材101页),25,while 语句例子,循环控制表达式 (一般为关系表达式),循环控制变量,循环体,注意: 1、若循环体包含一条以上的语句,应以复合语句形
10、式出现 2、循环前,必须给循环控制变量赋初值 3、循环体中,必须有改变循环控制变量值的语句(使循环趋向结束的语句),否则会出现死循环., i=2;p=1; while(i=5) p=p*i;i+; ,26,do-while语句(直到型),一般形式: do 循环体语句;while (表达式); 执行顺序: 首先执行循环体语句 ,然后判断表达式的值。如果表达式为非0,重复执行循环体语句, 直到表达式为 0,则执行下一条语句.,不可省略,切记!,(教材101页),27,求10!=1*2*3*10,用 do while语句 main() int i=1,; long p=1; do p=p*i; i+
11、;while(i=10); printf(%ld,p); ,用 while语句 main() int i=1; long p=1; while(i=10) p=p*i; i+; printf(%ld,p); ,变量初始化,循环控制变量初始化,先判后做,先做后判,28,例4.9:猜数游戏(教材103页),先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。,算法流程图见教材104页图4-18,29,#include #include main(
12、) int magic; int guess; int counter; /*记录人猜次数的计数器变量*/ magic = rand() % 100 + 1; counter = 0; /*计数器变量count初始化为0*/ do printf(Please guess a magic number:); scanf(%d, ,教材103页例4.9,30,for 语句,一般格式: for (表达式1; 表达式2; 表达式3) 循环体语句; ,执行顺序: 首先执行表达式1。如果表达式2的值为非0,就重复执行循环体语句和表达式3,直到表达式2的值为0时为止.,(教材101页),31,for 语句,
13、表达式1一个赋值语句,它在进入循环前设置循环控制变量的初始值,该语句只执行一次。 表达式2是一个关系表达式,是一个测试条件,它决定何时退出循环 表达式3决定每次执行循环时 循环控制变量如何变化,for (表达式1; 表达式2; 表达式3) 循环体语句; ,32,用for语句求10!=1*2*3*10,#include main() long int p=1,i; for(i=1;i=10;i+) p=p*i; printf(“p=%ldn,p); ,运行结果 p =3628800,思考:求n!,程序该如何修改?,答案:教材109页,33,例4.11:国王的许诺,相传国际象棋是古印度舍罕王的宰相
14、达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。 这位聪明的宰相指着88共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。 国王能兑现他的许诺吗?试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦粒合多少立方米?. 总粒数为:sum=1+2+22+23+263,这个数到底是多大呢? 1 蒲式耳(约35.2 升)小麦约有500 万颗.如果按美国2004年产小麦20.79亿蒲式耳 计算 ,这位宰相所要求的,竟是美国2000 个年头所生产的全部小麦!,程序
15、见 示例程序.DOC,(教材109页),34,流程的转移控制语句break和continue,对for、while、do-while循环进行内部手术 break,退出循环 continue,中断此次循环体的执行,开始下一次 break和continue少用为妙,(教材122页),35,例4.17 : break和continue的用法教材123页,#include main() int i, n; for (i=1; i=5; i+) printf(Please enter n:); scanf(%d, ,Please enter n:10 n = 10 Please enter n: -10
16、 Program is over!,continue;,程序如何运行?,36,例4.17 break语句和continue语句的用法,#include main() int i, n; for (i=1; i=5; i+) printf(Please enter n:); scanf(%d, ,Please enter n: 10 n = 10 Please enter n: -10 Please enter n: 20 n = 20 Please enter n: -20 Please enter n: 30 n = 30 Program is over!,(教材123页),37,嵌套循环,将一个循环语句用在另外一个循环语句的循环体中,就构成了嵌套循环,(教材115页),38,例4.15:打印下三角乘法九九表,程序见 示例程序.DOC,(教材118页),39
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康明白人演讲
- 试用期员工安全事故案例培训管理办法
- 2026年医院感染控制常识测试题与解析
- 喝中药的健康宣教
- 苏教版小学一年级语文下册《小松树和大松树》课文教案
- 小兔和蝴蝶健康
- 苏教版小学一年级语文下册单元基础巩固教案
- 医疗安全管理培训课件
- 骨科常见并发症及其预防
- 临床输血知识培训考试题及答案
- T∕CITS 172-2024 居家医学检验外送服务规范
- 2024年国家现行有关工程施工和验收的标准、规范、规程、图集合集
- 分包合同范本(2篇)
- 2024九年级数学上学期期中测试题新版华东师大版
- GB/T 44148.2-2024承压设备用钢锻件、轧制或锻制钢棒第2部分:规定高温性能的低合金及合金(钼、铬和铬钼)钢
- 办理暂住证授权委托书格式
- 工业机器人培训计划方案
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- 小升初六年级 小学英语 疑问词 特殊疑问句
- GB/T 7373-2006工业用二氟一氯甲烷(HCFC-22)
- GB/T 6311-2004大量程百分表
评论
0/150
提交评论