02.1第二章(算法)1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
2011-11-17
C语言的程序结构 语言的程序结构
函数类型说明 函数名 函数说明部分 (函数首部) 函数组成 函数体 函数形参 形参类型说明 变量定义部分 执行部分
4
C 程 序
由 若 干
例如: 例如:
int max(x, y) int x, y;
2011-11-17
等价
int max(int x, int y)
8
2011-11-17
C 语言程序设计
第2章 程序的灵魂— 程序的灵魂—算法
浙江理工大学 公共计算机教学部
教学要求
1. 了解算法的基本知识 2.了解算法的特性 了解算法的特性 3.了解算法的几种表示方法 了解算法的几种表示方法 4.掌握传统流程图和 掌握传统流程图和N-S流程图 掌握传统流程图和 流程图
将两个变量A 的值互换, 【例】将两个变量A和B的值互换,试描述算法
17
1、定义a,b;给a和b赋值 定义a,b; 2、定义变量c; 定义变量c; 3、a的值放到c(寄存); 的值放到c 寄存); 4、b的数值赋给a; 的数值赋给a; 5、寄存在c中的值(a)赋给b 寄存在c中的值( 赋给b
2011-11-17
数值性算法的举例(自然语言描述法) 数值性算法的举例(自然语言描述法)
输入三个数,然后输出其中最大的数。 【例】输入三个数,然后输出其中最大的数。 算法可以写成: 算法可以写成: 输入A (1) 输入A,B,C。 (2) 若A>B,则MAX ← A;否则MAX←B。 A>B, A;否则MAX←B MAX←B。 C>MAX, C。 (3) 若C>MAX,则MAX← C。 输出MAX MAX即为最大数 MAX, 即为最大数。 (4) 输出MAX,MAX即为最大数。
12
易于理解, 易于理解,但 冗长, 冗长,不够精 确,难于描述 复杂算法。 复杂算法。
例如当描述“输出10个 例如当描述“输出10个 数中最大数”的算法时, 数中最大数”的算法时, 会冗长、 会冗长、难于理解
2011-11-17
用流程图描述算法
起止框 输入/ 输入/输出框
13
开始 输入x和 输入 和y
2011-11-17
算法的特性
有穷性 确定性 有0个或多个输入 有一个或多个输出 有效性
15
2011-11-17
一些简单算法的举例(自然语言描述法) 一些简单算法的举例(自然语言描述法)
将两个瓶子A 分别盛放酱油和醋, 【例】将两个瓶子A和B,分别盛放酱油和醋, 要求将它们互换。 要求将它们互换。试描述算法
C 语言程序设计
主讲:边境 主讲:
浙江理工大学 公共计算机教学部
回顾——提高题例题分析 回顾——提高题例题分析
输入两个数,求最大, 输入两个数,求最大,并显示 #include <stdio.h> Main() { int a,b,c; scanf(“%d%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); } Int Max(int x,int y) { int t ; if(x>y) t=x; else t=y; return (t); }
2
2011-11-17
回顾——提高题分析 回顾——提高题分析
输入两个数,求最大, 输入两个数,求最大,并显示 #include <stdio.h> Main() { int a,b,c; 从键盘输入a,b的值 的值; 从键盘输入 的值 c=a,b中大的值 中大的值; 中大的值 屏幕显示c( 中大) 屏幕显示 (即a,b中大)的值 中大 的值; } Int Max(int x,int y) { int t; 如果x比y大,则 t=x; 如果 比 大 否则( 比 小 否则(x比y小) t=y; 返回t的值 的值; 返回 的值 }
10
2011-11-17
算法
什么是算法
–
11
为解决某一应用问题而采用的解题步骤 为解决某一应用问题而采用的解题步骤 用自然语言描述算法 用流程图描述算法 用N-S结构图描述算法 例如:输出两个数中的最大数 例如:
算法的描述方式
– – –
2011-11-17
用自然语言描述算法
第一步:输入x和y的值 第一步:输入x 第二步:比较x 的值,如果x大于y 第二步:比较x和y的值,如果x大于y,则 输出x的值,否则输出y的值。 输出x的值,否则输出y的值。
2011-11-17
实验问题
Cfree默认新建文件为 默认新建文件为c++文件 文件类型为 文件,文件类型为 默认新建文件为 文件 文件类型为*.cpp. 按c++的语法编译 的语法编译 实验时建议大家在运行之前先保存文件,文件类 实验时建议大家在运行之前先保存文件 文件类 以便编译按c语法来检查语法 型选择*.c,以便编译按 语法来检查语法 以便编译按 Printf(“hello,world”);屏幕显示 屏幕显示hello,world 屏幕显示 Printf语句特殊用法:转义符号 语句特殊用法: 语句特殊用法 – Printf(“\n”);光标回车换行 光标回车换行 – Printf(“%d”,a);显示 变量的值 显示a变量的值 显示 例如:显示a+b的值 例如:显示 的值 – Printf(“a+b=”); printf(“a+b=%d”,a); – Printf(“%d”,a+b);
2011-11-17
回顾——提高题代码实例 回顾——提高题代码实例
输入三个数,求最大, 输入三个数,求最大,并显示 #include <stdio.h> Main() { int a,b,c; scanf(“%d%d%d”,&a,&b,&c); z=max(a,b); z=max(z,c); printf(“max=%d”,z); } Int Max(int x,int y) { int t; if(x>y) t=x; else t=y; return (t); }
2011-11-17
数值性算法的举例(自然语言描述法) 数值性算法的举例(自然语言描述法)
1+2+3+….+100, 【例】求1+2+3+….+100,试描述算法
S1:求1+2,得结果 ‘ : 得结果3‘ 得结果 S2:将S1的结果加 ,得结果 ; 的结果加3,得结果6; : 的结果加 S3:将S2的结果加 ,得结果 ; 的结果加4,得结果10; : 的结果加 …….. S99: S98的结果加 S99:将S98的结果加100,得结果?; 的结果加100,得结果?; S1: 0⇒sum; 1⇒k; : ⇒ ⇒ S2:sum+k⇒sum; : ⇒ ; S3:k+1⇒k;; : ⇒ ; S4:若k<=100,返回 ;否则结束; 返回s2;否则结束; : 返回
16
1、定义瓶子C 定义瓶子C 2、A瓶的酱油暂时倒入C瓶(腾地方) 瓶的酱油暂时倒入C 腾地方) 3、B瓶的醋可以倒入A(因为A空) 瓶的醋可以倒入A 因为A 4、(B空)将C瓶酱油倒入B 、(B 瓶酱油倒入B
2011-11-17
一些简单算法的举例(自然语言描述法) 一些简单算法的举例(自然语言描述法)
2011-11-17
结构化程序设计的基本原则: 结构化程序设计的基本原则:
如果一个程序仅包含这三种基本结构(由这些 如果一个程序仅包含这三种基本结构( 基本结构顺序组成),则称为结构化程序。 ),则称为结构化程序 基本结构顺序组成),则称为结构化程序。 结构化程序设计的基本原则: 结构化程序设计的基本原则: – 采用自顶向下、逐步细化的方法进行设计; 采用自顶向下 逐步细化的方法进行设计 自顶向下、 的方法进行设计; – 采用模块化原则和方法进行设计。即将大型 采用模块化原则和方法进行设计。 模块化原则和方法进行设计 任务从上向下划分为多个功能模块, 任务从上向下划分为多个功能模块,每个模 块又可以划分为若干子模块, 块又可以划分为若干子模块,然后分别进行 模块程序的编写; 模块程序的编写; – 每个模块都是用结构化程序实现,即都只能 每个模块都是用结构化程序实现, 由三种基本结构组成, 由三种基本结构组成,并通过计算机语言的 结构化语句实现。 结构化语句实现。
20
2011-11-17
用流程图表示算法
一、常用流程图符号 1、起止框 、 2、输入输出框 、 3、判断框 、 4、处理框 、 5、流程线 、 6、连接点 、 7、注释框 、
开始
输入n值
21
结束
打印sum
2011-11-17
流程图表示算法
22
求最大数算法流程图
2011-11-17
流程图表示算法
18
2011-11-17
数值性算法的举例(自然语言描述法) 数值性算法的举例(自然语言描述法)
输入10个数 打印输出其中最大的数。 个数, 【例】输入 个数,打印输出其中最大的数。 算法设计如下: 算法设计如下:
19
个数, 将记录数据个数的变量N赋值为 赋值为1 ( 1)输入 个数 , 存入变量 A 中 , 将记录数据个数的变量 赋值为 ) 输入1个数 存入变量A 存入表示最大值的变量Max中,即Max=A (2)将A存入表示最大值的变量 ) 存入表示最大值的变量 中 (3)再输入一个值给 ,如果A>Max 则 Max=A, 否则Max不变 否则M 不变 )再输入一个值给A,如果A (4)让记录数据个数的变量增加 ,即N=N+1 )让记录数据个数的变量增加1, 是否小于10,若成立则转到第( 步执行 步执行, (5)判断 是否小于 ,若成立则转到第(3)步执行,否则转到 )判断N是否小于 第 (6)步。 (6)打印输出 )打印输出Max
C语言的程序结构 语言的程序结构
C程序的基本结构的特点: 程序的基本结构的特点: 程序的基本结构的特点
5
程序为函数模块结构, 程序由一个或多个函数构成 程序由一个或多个函数构成, (1)C程序为函数模块结构,C程序由一个或多个函数构成, ) 程序为函数模块结构 其中必须,且只能有一个主函数main()。 其中必须,且只能有一个主函数 。 程序从main()函数开始执行,在main()中结束。 函数开始执行, 中结束。 (2)C程序从 ) 程序从 函数开始执行 中结束 程序标志符号区分大小写。 (3)C程序标志符号区分大小写。 ) 程序标志符号区分大小写 每一个说明,每一个语句都必须以分号结尾。 (4)每一个说明,每一个语句都必须以分号结尾。但预处理 命令,函数头和花括号“ ”之后不能加分号。 命令,函数头和花括号“}”之后不能加分号。 (5)C 语言的注释符是以“/*”开头并以“*/”结尾的串。 ) 语言的注释符是以“ ”开头并以“ ”结尾的串。 在“/*”和“*/”之间的即为注释。 ” ”之间的即为注释。 在C++中,函数必须先声明后使用。 中 函数必须先声明后使用。
24
2011-11-17
三种基本结构 三种基本结构 1、顺序结构 、
25
a A B b
2、选择结构 、
a
成立
a P
不成立 成立
P
不成立
A b
B
A b
B
2011-11-17
三种基本结构 3、循环结构 、
a a
Leabharlann Baidu
26
A
成立
A
不成立
P
不成立 成立
P b
b
当型(While型)循环
直到型(Until型)循环
判断框
Y
处理框
x >y ?
N z= y
z= x
流程线
输出z 输出 结束 用流程图描述算法
2011-11-17
用N-S结构图描述算法
输入x、 的值 输入 、y的值 x>y T F z=x z=y 输出z的值 输出 的值
14
用N-S结构图描述的算法 结构图描述的算法 已经证明,任何复杂的问题都可以三种基本算 已经证明, 法结构来描述:顺序、选择、循环。 法结构来描述:顺序、选择、循环。因此用计 算机语句描述的程序也包含三种基本结构 程序也包含三种基本结构。 算机语句描述的程序也包含三种基本结构。
23
求10个数最大数算法流程图 10个数最大数算法流程图 2011-11-17
结构化程序设计
程序的三种基本结构 – 顺序结构程序:按照书写顺序依次执行语句 顺序结构程序: – 选择结构程序:按照条件判断选择执行语句 选择结构程序: – 循环结构程序:通过条件控制循环执行语句 循环结构程序: 三种基本结构的共同点: 三种基本结构的共同点: • 都是只有一个入口和一个出口; 都是只有一个入口和一个出口; • 结构内的每一个框都有机会被执行; 结构内的每一个框都有机会被执行; • 结构内没有死循环。 结构内没有死循环。
6
2011-11-17
提高题扩展
输入三个数,求最大, 输入三个数,求最大,并显示 思路(算法 算法) 思路 算法 – 定义函数(求最大值) 定义函数(求最大值)
Int max(int x,int y){ …. } max( y)
–
7
Main函数 Main函数
定义a,b,c三个变量;定义z; 三个变量;定义 定义 三个变量 a和b较大的数放到变量 中; 较大的数放到变量z中 和 较大的数放到变量 z和c较大的数放到变量 中; 较大的数放到变量z中 和 较大的数放到变量 z就是我们要求的最大数,显示; 就是我们要求的最大数, 就是我们要求的最大数 显示;