已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章程序设计结构,第3章程序设计结构,本章内容,3.2顺序结构,3.3选择结构,3.4循环结构,3.1程序设计结构的基本概念,3.5辅助控制语句,3.1程序设计结构的基本概念,本节内容,3.1.2程序设计的三种基本结构,3.1.3使用流程图描述程序算法,3.1.4C语句,3.1.1机构化程序设计的基本原则,3.1.1结构化程序设计的基本原则,结构化程序设计是从宏观角度描述程序设计。一个比较大的程序是由不同功能模块构成,每个模块完成一定的功能,而每个模块又是由三种基本程序设计结构描述的。结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计应遵循下述原则:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码,3.1.2程序设计的三种基本结构,3.1.2.1顺序结构按设定的顺序一步一步的执行操作步骤,直到完成全部工作。3.1.2.2选择结构此结构一定包含一个判断,根据判断结果的不同,执行不同操作步骤,获得不同的结果。3.1.2.3循环结构此结构一定包含一个判断,如果判断结果满足一定的条件,则反复执行一段操作步骤,直到判断结果不满足条件为止。,3.1.2程序设计的三种基本结构,三种基本结构有以下共同特点:(1)只有一个入口。(2)只有一个出口。(3)结构内的每一部分都有机会被执行到。(4)结构内不存在“死循环”。,3.1.3使用流程图描述程序算法,编写一个大一点的程序,在编写代码前,首先要写出程序的算法。程序算法可以用自然语言、伪代码、程序框图或N/S图来表示。用程序流程图来描述程设计的算法是比较通用的做法,程序流程图就是用框图来表示程序设计的算法。,3.1.4C语句,在C语言程序设计中,是以语句为单位向计算机发出操作命令的。一个实际的程序是由若干个语句构成的,语句是最小的程序设计单位,一个语句经编译后产生若干条机器指令。C语言把语句分成5类(函数调用语句、控制语句、空语句、复合语句、表达式语句),只有控制语句是系统提供的,其他语句都是程序设计人员根据具体操作给出的。,3.1.4C语句,(1)表达式语句。表达式语句由一个表达式加一个分号构成,最典型的是,由赋值表达式构成一个赋值语句。例如:e=3.2是一个赋值表达式,e=3.2;是一个赋值语句。,3.1.4C语句,(2)控制语句。控制语句用于完成一定的控制功能。if()else(条件语句)for()(循环语句)while()(循环语句)dowhile()(循环语句)continue(结束本次循环语句)break(中止执行switch或循环语句)switch(多分支选择语句)goto(转向语句)return(从函数返回语句),3.1.4C语句,(3)函数调用语句。函数调用语句由一个被调用函数加一个分号构成,例如:printf(“ThisisaCprograming.”);(4)复合语句。可以用把一组语句括起来构成复合语句(又称为分程序)。例如:m=a;a=b;b=m;(5)空语句。下面是一个空语句:;,3.1.4C语句,C程序中的数据类型定义、预处理命令及注释行都不是语句。C语言允许一行写几个语句,也允许一个语句拆开写在几行上,对书写格式没有固定要求,为了读写程序的方便,在书写程序时,还应错落有致。,3.2顺序结构,在顺序结构中,程序按照由上往下的顺序逐个执行各语句。,#includevoidmain()inta=3,b=4;inttemp;temp=a;a=b;b=temp;printf(a=%d,b=%dn,a,b);,【例3-2】交换a、b两个数的值,3.3选择结构,本节内容,3.3.2多分支语句,3.3.1条件语句,3.3.1条件语句,条件语句首先判断条件,根据条件满足情况,确定执行哪些程序语句。在条件语句中,要给出测试的条件,它可是任何常量、变量或表达式。大多数情况下,条件语句中被测试的条件为关系表达式或逻辑表达式。在条件语句中,条件的计算结果为非0时满足条件,否则不满足条件。if(x0时,计算y=x*x;当x=0)if(x=0)printf(xiszero);elseprintf(xispositive);,3.3.2多分支语句,多分支语句也叫开关语句,是多分支选择结构,它是根据多个条件进行多条运行线路的选择。1格式switch(E)casec_E1:语句组1;break;casec_E2:语句组2;break;casec_En;语句组n;break;default:语句组n+1;break;,3.3.2多分支语句,1执行过程switch语句先计算表达式E的值,然后E依次与c_E1到c_En进行比较。若E的值与某个情况常量c_Ei相等,则转到c_Ei:后面的“语句组i”去执行,执行完后再由break语句跳出switch语句,继续执行后面语句。当所有情况都不满足(E的值与所有情况常量的值都不相等)时,执行default:后面的语句组。,3.3.2多分支语句,注意1:如果case后面的语句组不跟随break语句,则在执行第一个符合条件的语句组后将不判断后面的条件,将直接依次执行其它情况常量后面的语句组。注意2:switch语句中可以省略default子句。在这种情况下,当所有情况都不满足时,将不执行任何语句组,直接跳出switch语句。,3.3.2多分支语句,#includevoidmain()intscore;intk;scanf(%d,【例3-10】编写程序,输入一个百分制成绩,对应输出等级A、B、C、D、E。90分以上为A,80分89分为B,70分79分为C,60分69分为D,60分以下为E。,3.3.2多分支语句,2说明(1)switch语句的作用是建立多路分支程序结构。(2)switch后面括号中的E的值通常为整型或字符型。(3)其中,c_E1c_En称为情况常量,通常为整型或字符型常量。(4)关键字case和后面的情况常量之间至少要用一个空格隔开。(5)E的值的类型要与情况常量的值类型相同。(6)每个情况常量的值必须互不相同。,3.3.2多分支语句,(7)各个case和default出现的次序不影响执行结果。(8)每个情况常量后都跟一个语句组,也就是符合该情况时,要执行的若干语句。(9)格式用中括号“”和“”括起来的break;为任选项,根据程序需要。(10)执行完case后面的语句组后,如果没有遇到break语句,接着执行下面case后的语句,直到switch语句结束。(11)正确使用break语句可以控制switch语句的流程。,3.4循环结构,本节内容,3.4.2while循环语句,3.4.3do-while循环语句,3.4.4循环嵌套,3.4.1for循环语句,3.4.5三种基本结构的综合应用,3.4循环结构,到目前为止,我们讨论的程序无论是简单语句还是条件语句都是按从上向下的顺序执行的。在解决实际问题中,有许多情况是要重复做某件事情,如果仅用前面介绍的方法编程,那是十分麻烦的,有时是不可能的。这类问题的解决需要用程序设计中的循环结构。在C语言中,循环结构可以用for、while、do-while三种循环语句来完成。,3.4.1for循环语句,for语句的特点是结构清晰,简洁有效。1格式for(表达式1;表达式2;表达式3)语句组;2功能for循环语句用于构成程序的循环结构。,3.4.1for循环语句,3组成for:为语句关键字;表达式1:通常为赋值语句,用于为循环控制变量赋初值。循环控制变量是控制循环次数的变量。表达式2:通常为关系表达式或逻辑表达式语句,用于对循环条件进行判断;满足条件则继续循环,不满足条件则终止循环。所谓满足条件就是表达式2的值为非0,否则就是不满足条件。如果在for循环语句中缺少“表达式2”,则默认循环条件为真,这时构成了无限循环。例如:for(i=1;i+),3.4.1for循环语句,表达式3:通常为自增或自减表达式语句,有时为赋值语句,用于改变循环控制变量的值。(注意:表达式3后面无分号)语句组:语句组为循环体,是被循环的对象,它可以是单个语句或多个语句,甚至是另一个循环语句,也就是循环的嵌套。当为复合语句时,必须用花括号“”和“”括起来。当语句组只有一句时,可省略花括号(或者说,如果不加花括号,则循环体的范围只到for后面第一个分号处)。,3.4.1for循环语句,4执行过程(1)计算“表达式1”,为循环变量赋初值。“表达式1”只是在刚进入循环语句时计算1次,以后再不计算!(2)计算“表达式2”,判断循环条件是否满足。若“表达式2”的值为真(非0),则顺序执行循环体中的语句,否则,for循环结束。(3)顺序执行循环体中的各语句,后进行下一步。(4)计算“表达式3”,修改循环控制变量,然后转到(2)。,3.4.1for循环语句,N,Y,Y,3.4.1for循环语句,#includevoidmain()inti,s=0;for(i=1;i=10;i+)s=s+i;printf(s=%dn,s);,【例3-11】编写计算s=1+2+3+10的程序。,3.4.1for循环语句,#includevoidmain()inti,n,s=1;printf(pleaseinputn:n);scanf(%d,【例3-12】输入一个数n(10),求n!。,3.4.1for循环语句,#includevoidmain()inti;intn;floats=1,p=0;printf(pleaseinputn:n);scanf(%d,【例3-13】编写程序,输入n,求1+1/2!+1/n!,3.4.2while循环语句,while循环语句while循环语句可以用来实现“当型”循环结构。1格式while(表达式)语句组;2功能:构成首先判断循环条件的程序结构,其特点是先判断表达式的值,而后执行语句。,3.4.2while循环语句,3组成while:为语句关键字。表达式:表达式为决定是否继续进行循环的判断条件。通常为关系表达式或逻辑表达式。当表达式的值为非0时,即满足循环条件;否则不满足。语句组:语句组为循环体,可以是单一语句,也可以是复合语句,或内嵌其他结构。4执行过程:先计算表达式的值,这个值为非0,则执行循环体;否则,循环结束,执行while循环后面的语句。,3.4.2while循环语句,3.4.2while循环语句,#includevoidmain()inti=1,s=0;while(i=10)s+=i+;printf(s=%dn,s);,【例3-14】用while循环语句编写计算s=1+2+3+10的程序。,3.4.2while循环语句,#includevoidmain()inti=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;,【例3-15】编写一程序,求110的平方。,3.4.3do-while循环语句,do-while循环语句这种循环结构与while循环语句的区别是do-while是先执行后判断,while是先判断后执行。1格式do语句组;while(表达式);2用途构成后判断循环条件的程序结构,循环体至少执行一次。,3.4.3do-while循环语句,3组成do和while:为循环语句的关键字。表达式:决定是否继续循环的条件,与while的同理。语句组:语句组为循环体。注意,此结构中,最后要以分号结束:while(表达式);4执行过程先执行循环体,然后计算判断表达式的值,根据这个值来决定是否继续执行循环体。如果表达式的值为非0,则转去执行循环体;否则,循环结束。循环体中的语句至少执行一次。,3.4.3do-while循环语句,3.4.3do-while循环语句,#includevoidmain()inti=1,s=0;dos+=i+;while(i=10);printf(s=%dn,s);,【例3-16】用do-while循环语句编写计算s=1+2+3+10的程序。,3.4.4循环嵌套,一个循环体内又包含另一个完整的循环结构,就称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环嵌套。三种循环可以互相嵌套,嵌套的层数不限。循环嵌套的执行流程是从外层循环开始执行,再进入内层循环执行,内层循环执行完毕后,退到外层循环继续执行。,3.4.4循环嵌套,#includevoidmain()inti=1,j=1;for(i=1;i=5;i+)for(j=1;j=i;j+)putchar(*);putchar(n);,【例3-17】编程输出如下图形:,*,3.4.4循环嵌套,#includevoidmain()inti,j;for(i=1;i10;i+)for(j=1;j=i;j+)printf(%d*%d=%dt,j,i,i*j);printf(n);,【例3-18】编写一程序,输出九九表。,3.4.5三种基本结构的综合应用,#definePI3.14159#includevoidmain()intr=1;floatarea;for(r=1;r=10;r+)area=PI*r*r;if(area100)printf(%fn,area);,【例3-19】输出半径从1到10的圆面积,直到面积大于100时停止。,3.4.5三种基本结构的综合应用,#include#includevoidmain()intx,i;intflag=1;printf(inputx:n);scanf(%d,if(x=2)flag=0;for(i=2;i=sqrt(x);i+)if(x%i=0)flag=0;if(flag=1)printf(yesn);elseprintf(non);,【例3-20】从键盘输入一个数,判断这个数是否是素数。,3.4.5三种基本结构的综合应用,3.5辅助控制语句,本节内容,3.5.2跳出语句,3.5.3继续语句,3.5.1无条件转向语句,3.5.1无条件转向语句,无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 34515-2026航天器热平衡试验方法
- 习题课件:正方形中的三大模型问题 专项
- 58爱房外包合同
- 一点点兼职外包合同
- 与4s店签外包合同
- 个体户服务外包合同
- 中软国际外包合同
- 互联网专线外包合同
- 供热服务外包合同
- 代账财务外包合同
- 预应力张拉安全培训课件
- 【MOOC】《理性思维实训》(华南师范大学)章节期末慕课答案
- 《水质监测智能无人实验室建设与运维技术要求》
- 2025年财政资金监管“清源行动”自查报告
- 《焊条电弧焊》课件(共七章)
- 2026中远海运集团招聘考试参考题库及答案解析
- 高速路机电安全培训课件
- 医疗器械生产企业洁净区工作服管理规定
- 2025国铁集团考试题库及答案
- 老年健康饮食指导及食谱设计
- 中国科学院2025年科研项目聘用人员工作规范与考核协议
评论
0/150
提交评论