版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 程序设计结构,第3章 程序设计结构,本章内容,3.2 顺序结构,3.3 选择结构,3.4 循环结构,3.1 程序设计结构的基本概念,3.5 辅助控制语句,3.1 程序设计结构的基本概念,本节内容,3.1.2 程序设计的三种基本结构,3.1.3 使用流程图描述程序算法,3.1.4 C语句,3.1.1 机构化程序设计的基本原则,3.1.1 结构化程序设计的基本原则,结构化程序设计是从宏观角度描述程序设计。 一个比较大的程序是由不同功能模块构成,每个模块完成一定的功能,而每个模块又是由三种基本程序设计结构描述的。 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。 结构化程序
2、设计应遵循下述原则: (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)结构内的每一部分都有机会被执行到。
3、(4)结构内不存在“死循环”。,3.1.3 使用流程图描述程序算法,编写一个大一点的程序,在编写代码前,首先要写出程序的算法。程序算法可以用自然语言、伪代码、程序框图或N/S图来表示。 用程序流程图来描述程设计的算法是比较通用的做法,程序流程图就是用框图来表示程序设计的算法。,3.1.4 C语句,在C语言程序设计中,是以语句为单位向计算机发出操作命令的。 一个实际的程序是由若干个语句构成的,语句是最小的程序设计单位,一个语句经编译后产生若干条机器指令。 C语言把语句分成5类(函数调用语句、控制语句、空语句、复合语句、表达式语句),只有控制语句是系统提供的,其他语句都是程序设计人员根据具体操作给
4、出的。,3.1.4 C语句,(1)表达式语句。表达式语句由一个表达式加一个分号构成,最典型的是,由赋值表达式构成一个赋值语句。 例如: e=3.2 是一个赋值表达式, e=3.2;是一个赋值语句。,3.1.4 C语句,(2)控制语句。控制语句用于完成一定的控制功能。 if()else (条件语句) for() (循环语句) while() (循环语句) dowhile() (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) switch (多分支选择语句) goto (转向语句) return (从函数返回语句),3.1.4 C语句,(3)函数
5、调用语句。函数调用语句由一个被调用函数加一个分号构成,例如: printf(“This is a C programing.”); (4)复合语句。可以用把一组语句括起来构成复合语句(又称为分程序)。例如: m=a;a=b;b=m; (5)空语句。下面是一个空语句: ;,3.1.4 C语句,C程序中的数据类型定义、预处理命令及注释行都不是语句。 C语言允许一行写几个语句,也允许一个语句拆开写在几行上,对书写格式没有固定要求,为了读写程序的方便,在书写程序时,还应错落有致。,3.2 顺序结构,在顺序结构中,程序按照由上往下的顺序逐个执行各语句。,#include void main() int
6、a=3,b=4; int temp; 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(x5) if(a 2功能 若E为非0,即为真值时,执行if语句中的语句组,否则执行
7、后面的语句。,3.3.1 条件语句,表达式,If的后续语句,3.3.1 条件语句,#include void main() int x; printf(please input x:n); scanf(%d, ,【例3-4】从键盘上输入一个数,求这个数的绝对值,3.3.1 条件语句,#include void main() float a,b,s; scanf(%f,%f, ,【例3-5】求任意两个数字a、b中比较大的那个数的平方,3.3.1 条件语句,#include void main() float a,b,s; float t; scanf(%f,%f, ,另一解法,3.3.1 条件语
8、句,3.3.1.2 双分支选择结构 1格式 if(E) 语句组1; else 语句组2; 2功能 如果E为非0,则执行语句组1的语句,然后执行整个if-else的后续语句;否则执行语句组2,然后执行后续语句。,3.3.1 条件语句,3.3.1 条件语句,#include void main() int x,y; scanf(%d, ,【例3-6】设x为任意整数,求y的值,当x0时,计算y=x*x;当x=0时,计算y=2*x,3.3.1 条件语句,3.3.1.3 用if-else实现多分支选择结构 实现多分支选择结构的if语句结构如下: if(E1) 语句组1; else if(E2) 语句组2
9、; else if(E3) 语句组3; else if(En) 语句组n; else 语句组n+1; 后续语句,3.3.1 条件语句,#include void main() float x,y; scanf(%f, ,3.3.1 条件语句,3.3.1.4 if语句的嵌套 if语句是可以嵌套的,即if语句内部还可以包含if语句。 if(E1) if(E2) 语句组1; else 语句组2; else if(E3) 语句组3; else 语句组4; 后续语句,3.3.1 条件语句,#include void main() int a,b,c; int small; scanf(%d,%d,%d,
10、 /这对花括号可以不用,else if(b=c) small=b; else small=c; /这对花括号可以不用printf(smallest=%dn,small); ,【例3-8】从键盘任意输入3个整数a、b、c,求其中最小的数。,3.3.1 条件语句,关于选择结构要注意的问题: (1)if语句中的判断条件不一定必须是关系表达式、逻辑表达式或结果为整数值的表达式。(常数也可,非0为真,0为假) (2)当if语句中的判断条件为相等关系式时,要注意用“=”运算符,而不要用赋值运算符“=”。 (3)在if语句的嵌套使用中,注意else与if的配对问题。C语言规定else与其上面最靠近它的还未配
11、对的if相配对。,3.3.1 条件语句,int x=10; if(x=0) if(x=0) printf(x is zero); else printf(x is positive);,int x=10; if(x=0) if(x=0) printf(x is zero); else printf(x is positive); ,3.3.2 多分支语句,多分支语句也叫开关语句,是多分支选择结构,它是根据多个条件进行多条运行线路的选择。 1格式 switch(E) case c_E1:语句组1; break; case c_E2:语句组2; break; case c_En;语句组n; bre
12、ak; 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:switc
13、h语句中可以省略default子句。在这种情况下,当所有情况都不满足时,将不执行任何语句组,直接跳出switch语句。,3.3.2 多分支语句,#include void main() int score; int k; 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称为情况常量,通常为
14、整型或字符型常量。 (4)关键字case和后面的情况常量之间至少要用一个空格隔开。 (5)E的值的类型要与情况常量的值类型相同。 (6)每个情况常量的值必须互不相同。,3.3.2 多分支语句,(7)各个case和default出现的次序不影响执行结果。 (8)每个情况常量后都跟一个语句组,也就是符合该情况时,要执行的若干语句。 (9)格式用中括号“”和“”括起来的break;为任选项,根据程序需要。 (10)执行完case后面的语句组后,如果没有遇到break语句,接着执行下面case后的语句,直到switch语句结束。 (11)正确使用break语句可以控制switch语句的流程。,3.4
15、循环结构,本节内容,3.4.2 while循环语句,3.4.3 do-while循环语句,3.4.4 循环嵌套,3.4.1 for循环语句,3.4.5 三种基本结构的综合应用,3.4 循环结构,到目前为止,我们讨论的程序无论是简单语句还是条件语句都是按从上向下的顺序执行的。在解决实际问题中,有许多情况是要重复做某件事情,如果仅用前面介绍的方法编程,那是十分麻烦的,有时是不可能的。这类问题的解决需要用程序设计中的循环结构。在C语言中,循环结构可以用for、while、do-while三种循环语句来完成。,3.4.1 for循环语句,for语句的特点是结构清晰,简洁有效。 1格式 for(表达式1
16、;表达式2;表达式3) 语句组; 2功能 for循环语句用于构成程序的循环结构。,3.4.1 for循环语句,3组成 for:为语句关键字; 表达式1:通常为赋值语句,用于为循环控制变量赋初值。循环控制变量是控制循环次数的变量。 表达式2:通常为关系表达式或逻辑表达式语句,用于对循环条件进行判断;满足条件则继续循环,不满足条件则终止循环。所谓满足条件就是表达式2的值为非0,否则就是不满足条件。 如果在for循环语句中缺少“表达式2”,则默认循环条件为真,这时构成了无限循环。例如:for(i=1;i+),3.4.1 for循环语句,表达式3:通常为自增或自减表达式语句,有时为赋值语句,用于改变循
17、环控制变量的值。(注意:表达式3后面无分号) 语句组:语句组为循环体,是被循环的对象,它可以是单个语句或多个语句,甚至是另一个循环语句,也就是循环的嵌套。当为复合语句时,必须用花括号“”和“”括起来。 当语句组只有一句时,可省略花括号(或者说,如果不加花括号,则循环体的范围只到for后面第一个分号处)。,3.4.1 for循环语句,4执行过程 (1)计算“表达式1”,为循环变量赋初值。“表达式1”只是在刚进入循环语句时计算1次,以后再不计算! (2)计算“表达式2”,判断循环条件是否满足。若“表达式2”的值为真(非0),则顺序执行循环体中的语句,否则,for循环结束。 (3)顺序执行循环体中的
18、各语句,后进行下一步。 (4)计算“表达式3”,修改循环控制变量,然后转到(2)。,3.4.1 for循环语句,N,Y,Y,3.4.1 for循环语句,#include void main() int i,s=0; for(i=1;i=10;i+) s=s+i; printf(s=%dn,s); ,【例3-11】编写计算s=1+2+3+10的程序。,3.4.1 for循环语句,#include void main() int i,n,s=1; printf(please input n:n); scanf(%d, ,【例3-12】输入一个数n(10),求n!。,3.4.1 for循环语句,#i
19、nclude void main() int i; int n; float s=1,p=0; printf(please input n:n); scanf(%d, ,【例3-13】编写程序,输入n,求1+1/2!+1/n!,3.4.2 while循环语句,while循环语句 while循环语句可以用来实现“当型”循环结构。 1格式 while(表达式) 语句组; 2功能: 构成首先判断循环条件的程序结构,其特点是先判断表达式的值,而后执行语句。,3.4.2 while循环语句,3组成 while:为语句关键字。 表达式:表达式为决定是否继续进行循环的判断条件。通常为关系表达式或逻辑表达式。
20、当表达式的值为非0时,即满足循环条件;否则不满足。 语句组:语句组为循环体,可以是单一语句,也可以是复合语句,或内嵌其他结构。 4执行过程: 先计算表达式的值,这个值为非0,则执行循环体;否则,循环结束,执行while循环后面的语句。,3.4.2 while循环语句,3.4.2 while循环语句,#include void main() int i=1,s=0; while(i=10) s+=i+; printf(s=%dn,s); ,【例3-14】用while循环语句编写计算s=1+2+3+10的程序。,3.4.2 while循环语句,#include void main() int i=
21、1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,【例3-15】编写一程序,求110的平方。,3.4.3 do-while循环语句,do-while循环语句 这种循环结构与while循环语句的区别是do-while是先执行后判断,while是先判断后执行。 1格式 do 语句组; while(表达式); 2用途 构成后判断循环条件的程序结构,循环体至少执行一次。,3.4.3 do-while循环语句,3组成 do和while:为循环语句的关键字。 表达式:决定是否继续循环的条件,与while的同理。 语句组:语句组为循环体。 注意,此结构中,最后要以
22、分号结束: while(表达式); 4执行过程 先执行循环体,然后计算判断表达式的值,根据这个值来决定是否继续执行循环体。如果表达式的值为非0,则转去执行循环体;否则,循环结束。循环体中的语句至少执行一次。,3.4.3 do-while循环语句,3.4.3 do-while循环语句,#include void main() int i=1,s=0; do s+=i+; while(i=10); printf(s=%dn,s); ,【例3-16】用do-while循环语句编写计算s=1+2+3+10的程序。,3.4.4 循环嵌套,一个循环体内又包含另一个完整的循环结构,就称为循环的嵌套。内嵌的循
23、环中还可以嵌套循环,这就是多层循环嵌套。三种循环可以互相嵌套,嵌套的层数不限。 循环嵌套的执行流程是从外层循环开始执行,再进入内层循环执行,内层循环执行完毕后,退到外层循环继续执行。,3.4.4 循环嵌套,#include void main() int i=1,j=1; for(i=1;i=5;i+) for(j=1;j=i;j+) putchar(*); putchar(n); ,【例3-17】编程输出如下图形:,* * * * *,3.4.4 循环嵌套,#include void main() int i,j; for(i=1;i10;i+) for(j=1;j=i;j+) printf
24、(%d*%d=%dt,j,i,i*j); printf(n); ,【例3-18】编写一程序,输出九九表。,3.4.5 三种基本结构的综合应用,#define PI 3.14159 #include void main() int r=1; float area; for(r=1;r=10;r+) area=PI*r*r; if(area100) printf(%fn,area); ,【例3-19】输出半径从1到10的圆面积,直到面积大于100时停止。,3.4.5 三种基本结构的综合应用,#include #include void main() int x,i; int flag=1; printf(input x: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); else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度声讯服务合同
- 纸制抹布市场发展预测和趋势分析
- 2024年度慈善活动大巴车租赁运输合同
- 2024年度南京专利实施许可合同
- 2024年度保险合同及其理赔流程
- 2024年度智能安防系统建设及运维合同
- 2024年度YZA商务咨询有限公司咨询服务合同
- 04版影视版权购买与授权合同
- 羊绒衫市场发展现状调查及供需格局分析预测报告
- 2024年度城市公共照明设施维护合同
- 《检验光合作用产生氧气实验》教学设计
- 莎士比亚戏剧赏析智慧树知到期末考试答案章节答案2024年北京师范大学
- 抗酸药的认知 (1)课件讲解
- 国培计划培训成果汇报
- 2024中国联通黑龙江省分公司春季校园招聘公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 01中国电信云计算产品体系架构
- 汉十项目隧道二衬缺陷整治专项施工方案(指挥部上报审批通过)
- 市政道路关键技术标
- Unit 14 I remember meeting all of you in Grade 7 第1课时公开课教学设计【人教版九年级英语】
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- 2024年-科技部技术转让合同等模板
评论
0/150
提交评论