当前位置:文档之家› 第3章 程序的控制结构及结构化程序设计方法

第3章 程序的控制结构及结构化程序设计方法


3、有效性:每一步都应当能有效地进行并得到确定的结果。
4、有0个或多个输入。 5、有1个或多个输出。
3.1.2 简单算法举例
例1:求12345。
算法一: S1:求12 ,得2; 算法二: S1:p=1
S2:将S1得的2再乘3,得6;
S3:将S2得的6再乘4,得24; S4:将24再乘5,得120,结果。
(2)只有一个出口 (3)结构内的每一部分都有机会被执行
(4)结构内不存在“死循环”
3.2 顺序结构程序设计
一、顺序结构概念: 顺序结构是最简单的C语言程序结构,也是C语言程序中 最常用的程序结构,主要由表达式语句组成。 特点: 完全按照语句出现的先后顺序执行程序。
3.2 顺序结构程序设计
二、顺序结构流程图表示: 传统流程图:
A B
N-S流程图:
A B
3.2 顺序结构程序设计
三、应用举例:
例3.1:假设银行定期存款的年利率r为2.25%,存款期为n年, 存款本金为m元,求n年后可得到的本利之和。 用N-S图表示的算法: 输入n和m的值 利用公式total=m*(1+r) 计算本利之和total 输出计算结果total
n

表达式2


表达式3


else if(表达式m) 语句m else 语句m+1
适合于解决多分支选择问题
语句1
语句2
语句3
语句4
3.3 选择结构程序设计

例3.4 从键盘输入你和你朋友的年龄,编程判断谁的年龄 最大,并打印他的年龄。
算法1: 用不带else子句的if语句编程。 N-S流程图: Y 输出yours his>yours 读入 yours,his yours>=his N
程序见eg3_2
3.2 顺序结构程序设计
例3.3:编程计算方程ax 2+bx+c=0的根,a,b,c 由键盘输入, 2 假设b -4ac> 0。 分析: 一元二次方程的求根公式:
x1, 2
b b 2 4ac b b 2 4ac 2a 2a 2a
b p 2a x1 p q
S3:s=s+n
S4:n=n+2 S4:n=n+1
<100,返回到S3, S5:若n 100,返回到S3, 否则结束。
3.1.2 简单算法举例
例3: 求1-2+3-4……-100 算法: S1:sign=1 S2:n=2 S3:s=1 S4:sign=(-1) sign S5:s=s+sign n
S2:i=2
S3:p =pi S4:i=i+1 S5:若i5,返回S3, 否则结束,得出结果 p为5!。
比较两个算法: 算法一:繁琐,数目大时步骤太多。
算法二:利用循环算法,借助两个变量,可求任意数的阶乘,提高通用性。
3.1.2 简单算法举例
例2: 求1+2+3+4……+100
算法:
S1:n=2 S1:n=1 S2:s=0 思考: 1+3+5+7+……+99 2+4+6+8+…..+100
3.2 顺序结构程序设计
程序清单: #include <math.h> main( ) { int m,n; float r=0.0225,total; printf(“Please enter n,m:”); scanf(“%d,%d”,&n,&m); total=m*pow(1+r,n); printf(“Total=%f\n”,total); } 运行结果: Please enter n,m:1,500 Total=511.250000

Y
程序见eg3_4_1 输出his
N
3.3 选择结构程序设计

算法2: 用带有else子句的if语句编程。 N-S流程图: 读入 yours,his Y yours>=his 输出his N
输出yours
程序见eg3_4_2
3.3 选择结构程序设计

算法3: 用条件表达式实现。 条件表达式: 表达式1 ? 表达式2 : 表达式3 N-S流程图: 读入 yours,his Y yours>=his max=his N
3.2 顺序结构程序设计
C程序结构框架:
以#开始的编译预处理命令行 main( ) { 局部变量说明语句;
执行语句序列;
}
注: 编译预处理命令不是C语 句,每条指令单独占一行, 同一行不能有其它的编译指 令或C语句。
包含头文件的方式:#include <文件名> #include “文件名”
3.2 顺序结构程序设计
Y
S4:i+1 i
S5:若i 5,返回S3,否则 结束,得出结果 p为5!。
P=P*i
i=i+1 打印P
结束
3.1.3 算法的表示方法
三、N-S结构化流程图 取消改进流程图中的流程线,这种算法被迫只能从上到下顺 序执行,从而避免了算法流程的任意转向,保证了程序的质量。 优点:既形象直观,又节省篇幅,基本结构及算法的表示均在 一个矩形框内,尤其适于表示结构化程序的设计。 所谓结构化程序设计就是由基本结构顺序组成的,基本结 构之间无跳转。
第三章 程序的控制结构与 结构化程序设计方法
3.1 算法与算法的表示方法
3.2 顺序结构程序设计
3.3 选择结构程序设计
3.4 循环结构程序设计
3.1 算法与算法的表示方法
本章主要内容: 1.了解算法的表示方法及其在程序设计中的重要地位. 2.掌握 C 语言的基本控制结构和基本控制语句. 3.掌握用 C 语言的基本控制语句进行顺序,选择和 循环结构程序的设计. 4.掌握一些常用的算法,如递推法,迭代法,穷举法等. 5.了解结构化程序设计的基本思想
-x
x>0 x=0 x>0
3.3 选择结构程序设计
选择结构的流程图表示
入口 真 假 真

P
P A B

A
B
出口
N-S 流程图
传统流程图
3.3 选择结构程序设计
选择结构种类


单分支的选择结构 双分支的选择结构 多分支的选择结构 嵌套的if语句或switch语句
3.3 选择结构程序设计
条件语句


if 形式 if(表达式) 语句A 适合于解决单分支选择问题
表达式 真

语句

if ~ else 形式 if(表达式)语句1 else 语句2 适合于解决双分支选择问题

表达式

语句1
语句2
3.3 选择结构程序设计

else~if 形式
表达式1

if(表达式1) 语句1 else if(表达式2) 语句2 …
S6:n=n+1
S7:若n 100,返回到S4,
否则结束。
3.1.3 算法的表示方法
一、自然语言表示 二、流程图表示
处理框
输入输出框
起止框
判断框
连接符
流程线
3.1.3 算法的表示方法
例1中求5!的算法用流程图表示:
算法: 开始 P=1 i=2 p
N
S1:p=1
S2:i=2 S3:p i
i5
四、伪代码表示: 伪码是指介于自然语言和计算机语言之间的一种代码, 是帮助程序员制定算法的智能化语言,它不能在计算机上 运行,但是使用起来比较灵活,无固定格式和规范,只要 写出来自己或别人能看懂即可,而且比较容易转换为计算 机程序。
3.1.3 算法的表示方法
例:用伪码表示的计算n!的算法 input n if n<0 print “input error!” goto end else fac=1 i=1 loop: fac=fac*i i=i+1 if i<=n goto loop print fac end
3.1.3 算法的表示方法
例1中求5!用N-S图表示:
p=1 i=2 p=p*i i=i+1 直到 i>5为假 打印p
用C实现
main( ) { int i,p; p=1; i=2; do { p=p*i; i=i+1; }while(i<5) printf(“%d”,p); }
3.1.3 算法的表示方法
返回
3.2 顺序结构程序设计
三种基本结构: 为了使流程图便于理解和阅读,限制无规律的任意转 向,结构化程序设计规定了三种基本结构,即:顺序结构、 选择结构、循环结构。然后由这些基本结构按一定规律组 成一个算法结构,整个算法的结构由上而下地将各个基本 结构顺序排列起来的。 三种基本结构的特点:
(1)只有一个入口
max=yoБайду номын сангаасrs
输出max 程序见eg3_4_3
3.3 选择结构程序设计
例3.5 体型判断。判断某人是否属于肥胖,可根据身高 与体重等因素来判断,按照“体指数”对肥胖程度进 行划分: 2 体指数t = 体重w /(身高h ) (其中,w单位为kg,h单位为m) 当 t<18 时,为低体重; 当 t介于18和25 之间时,为正常体重; 当 t介于25和27 之间时,为超重体重; 当 t>27 时,为肥胖。

算法3:用在else子句中嵌入if语句的形式编程。 N-S流程图: 输入身高h和体重w 计算体指数t
Y
t<18
N
t<25
Y
低体重
相关主题