




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第4章程序的控制结构,.,2,内容提要,基本控制结构基本控制语句常用算法,.,3,构成程序的三种基本结构,顺序结构选择结构循环结构已经证明,任何程序均可只用这三种结构综合描述,只用这三种结构编制的程序,叫结构化程序,传统的流程图,.,4,顺序结构,顺序结构是一种最简单、最基本的结构,其特点是完全按照语句出现的先后次序执行程序。它由A和B两个语句块组成,且仅有一个入口()和一个出口()。最简单的情况是每一语句块中只含有一条不产生控制转移的执行语句。,.,5,顺序结构程序举例,例4.3编程计算ax2+bx+c=0的根,a,b,c由键盘输入,假设b2-4ac0.#include#includemain()floata,b,c,disc,x1,x2,p,q;printf(“Pleaseenterthecoefficientsa,b,c:”);scanf(%f,%f,%f,教材83页,Pleaseenterthecoefficientsa,b,c:,2,6,1,x1=-0.1771,x2=-2.8229,.,6,选择结构,该结构的作用是根据所选定的条件是否满足,决定从给定的两组或多组操作选择其一.在c语言中,实现选择结构的语句有if语句和switch语句,教材84页,.,7,if语句三种形式,1.形式之一if(表达式)语句1;语句作用:如果表达式为真,执行语句1;否则什么都不做注意:语句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;elseif(表达式2)语句2;elseif(表达式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,猜数游戏用到的库函数,怎样模拟计算机“想”一个数呢?随机函数rand(),在stdlib.h中定义产生0,RAND_MAX之间的随机数magic=rand();RAND_MAX,不大于双字节整数的最大值32767,.,15,猜数游戏算法流程图,程序见示例程序.DOC,.,16,练习题,例:有一分段函数y=f(x),当-30时y=2x-1,当x=0时y=0编程实现输入一个x值,输出y值。要求用if语句三种形式分别编写。,.,17,一般形式switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1,switch语句,语句作用:我们称常量表达式值为入口标号,当表达式的值与case中常量表达式值匹配时,即顺序执行相应的一个或多个语句。,教材95页,.,18,switch语句示例程序,编程实现五分制成绩转换成百分制成绩即输入:A输出:90-100B:80-90C:70-80D:60-70E:60,.,19,#includestdio.hmain()chargrade;grade=getchar();switch(grade)caseA:printf(“90100n);break;caseB:printf(“8090n);break;caseC:printf(“7080n);break;caseD:printf(“60-70n);breakcaseE:printf(60n);break;default:printf(inputerrorn);,结果:输入:B输出:8090,.,20,#includestdio.hmain()chargrade;grade=getchar();switch(grade)caseA:printf(“90100n);caseB:printf(“8090n);caseC:printf(“7080n);caseD:printf(“6070n);caseE:printf(60n);default:printf(inputerrorn);,结果:输入:B输出:80907080607060inputerror,原因是什么呢?见教材95-96页5点说明,.,21,例4.8:计算器程序,编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1运算符op操作数2然后,计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/),(教材98页),自学,.,22,条件表达式,一般形式:表达式1?表达式2:表达式3执行顺序:先求解表达式1,若值为非0,则求解表达式2,表达式2的值为最终结果;若值为0,则求解表达式3,表达式3的值为最终结果。,自学,(教材88页),.,23,循环结构,什么是循环?循环是程序中重复执行,直到满足指定条件才停止的一段代码.循环结构是程序中一种很重要的结构。特点:在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。,(教材100页),.,24,实现循环结构的3种循环语句,多功能,当型循环先判断后执行,直到型循环先执行后判断,.,25,While语句,一般形式:while(表达式)循环体语句;执行顺序(1)判断表达式(循环条件)的值,(2)表达式为真(非0)时,执行循环体语句,循环体语句执行结束,返回(1)表达式为假(0)时,循环结束,退出循环,执行下一条语句,(教材101页),.,26,while语句例子,循环控制表达式(一般为关系表达式),循环控制变量,循环体,注意:1、若循环体包含一条以上的语句,应以复合语句形式出现2、循环前,必须给循环控制变量赋初值3、循环体中,必须有改变循环控制变量值的语句(使循环趋向结束的语句),否则会出现死循环.,i=2;p=1;while(i=5)p=p*i;i+;,.,27,do-while语句(直到型),一般形式:do循环体语句;while(表达式);执行顺序:首先执行循环体语句,然后判断表达式的值。如果表达式为非0,重复执行循环体语句,直到表达式为0,则执行下一条语句.,不可省略,切记!,(教材101页),.,28,求10!=1*2*3*10,用dowhile语句main()inti=1,;longp=1;dop=p*i;i+;while(i=10);printf(%ld,p);,用while语句main()inti=1;longp=1;while(i=10)p=p*i;i+;printf(%ld,p);,变量初始化,循环控制变量初始化,先判后做,先做后判,.,29,例4.9:猜数游戏(教材103页),先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。,算法流程图见教材104页图4-18,.,30,#include#includemain()intmagic;intguess;intcounter;/*记录人猜次数的计数器变量*/magic=rand()%100+1;counter=0;/*计数器变量count初始化为0*/doprintf(Pleaseguessamagicnumber:);scanf(%d,教材103页例4.9,.,31,for语句,一般格式:for(表达式1;表达式2;表达式3)循环体语句;,执行顺序:首先执行表达式1。如果表达式2的值为非0,就重复执行循环体语句和表达式3,直到表达式2的值为0时为止.,(教材101页),.,32,for语句,表达式1一个赋值语句,它在进入循环前设置循环控制变量的初始值,该语句只执行一次。表达式2是一个关系表达式,是一个测试条件,它决定何时退出循环表达式3决定每次执行循环时循环控制变量如何变化,for(表达式1;表达式2;表达式3)循环体语句;,.,33,用for语句求10!=1*2*3*10,#includemain()longintp=1,i;for(i=1;i=10;i+)p=p*i;printf(“p=%ldn,p);,运行结果p=3628800,思考:求n!,程序该如何修改?,答案:教材109页,.,34,例4.11:国王的许诺,相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着88共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。国王能兑现他的许诺吗?试编程计算舍罕王共要多少粒麦子赏赐他的宰相,这些麦粒合多少立方米?.总粒数为:sum=1+2+22+23+263,这个数到底是多大呢?1蒲式耳(约35.2升)小麦约有500万颗.如果按美国2004年产小麦20.79亿蒲式耳计算,这位宰相所要求的,竟是美国2000个年头所生产的全部小麦!,程序见示例程序.DOC,(教材109页),.,35,流程的转移控制语句break和continue,对for、while、do-while循环进行内部手术break,退出循环continue,中断此次循环体的执行,开始下一次break和continue少用为妙,(教材122页),.,36,例4.17:break和continue的用法教材123页,#includemain()inti,n;for(i=1;i=5;i+)printf(Pleaseentern:);scanf(%d,Pleaseentern:10n=10Pleaseentern:-10Programisover!,continue;,程序如何运行?,.,37,例4.17break语句和continue语句的用法,#includemain()inti,n;for(i=1;i=5;i+)printf(Pleaseentern:);scanf(%d,Pleaseentern:10n=10Pleaseentern:-10Pleaseentern:20n=20Pleaseentern:-20Pleaseentern:30n=30Programisover!,(教材123页),.,38,嵌套循环,将一个循环语句用在另外一个循环语句的循环体中,就构成了嵌套循环,(教材115页),.,39,例4.15:打印下三角乘法九九表,程序见示例程序.DOC,(教材118页),.,40,使用嵌套的循环体时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度安全培训学时证明课件
- 年底安全教育培训课件
- 2025年什邡市事业单位考试真题
- 数控机床订购合同7篇
- 姚安交通安全培训课件
- 工业安全培训目标课件
- Ethyl-3-3-dimethyl-4-nitrobutanoate-生命科学试剂-MCE
- 农发行鹤岗市工农区2025秋招群面案例总结模板
- 国家管网北京智网数科公司高校毕业生招聘笔试真题2024
- 平角焊两层课件
- 京东方岗位胜任力测评题库
- 印刷包装公司安全生产管理方案
- 高中数学64数列求和省公开课获奖课件市赛课比赛一等奖课件
- 二手车国庆节活动方案
- 人教版八年级上册地理教学计划及进度表
- 2025高考物理步步高同步练习必修3练透答案
- 分包单位与班组签订合同
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 2024年初中升学考试九年级数学专题复习新课标要求-中考33讲
- (高清版)DZT 0289-2015 区域生态地球化学评价规范
- 冲压车间给员工培训课件
评论
0/150
提交评论