第2章C语言程序设计基础
3ቤተ መጻሕፍቲ ባይዱ
算法
著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序
➢ 对数据的描述:数据结构(data structure) ➢ 对操作的描述:算法(algorithm)
算法: 为解决一个具体问题而采取的确定的有限的操作步 骤,仅指计算机能执行的算法
4
算法的特性
有穷性
在合理的时间内完成
确定性(无歧义)
16
N-S图(盒图)
将 求10个任意整数中的最 大数 用N-S图进行描述。
输入max 1n n<10 输入x T x>max? F xmax n+1n 输出max
17
程序设计步骤
根据实际问题设计应用程序大致要经过以下四个步骤: ➢分析问题 ➢画流程图或N-S图 ➢编写程序 ➢运行并调试程序
采用自顶向下、逐步细化的结构化分析的方法
运算符(Operator)
34种,+
分隔符(Separator)
空格、回车/换行、逗号等
其它符号
大花括号“{”和“}”
程序
语句
标识符 关键字 常量、变量 运算符 分隔符
……
23
常量
常量是在程序中保持不变的量 常量区分为不同类型:整型、实型、字符型和字符串型 如 12、3.2、'a'、 "hello"
/*输入两个整型数x和y*/ /*调用函数Add计算x和y相加之和*/ /*输出x和y相加之和*/
22
关C键语字(言Keyw中ord)的基本元素
又称为保留字
数据类型修饰符int,控制语句 return等
标识符(Identifier)
系统预定义标识符, main,printf 等
用户自定义标识符,Add, x, y 等
如果x≥0,则输出Yes;如果x≤0,则输出No;
可行性(有效性)
能有效执行 负数开平方
有足够的情报
没有输入或有多个输入
有一个或多个输出
5
算法的表示方法
自然语言描述 流程图
在1966年,Bohra 与 Jacopini 提出
N-S图
1973年,美国学者I.Nassi 和 B.Shneiderman 提出
起止框
处理框
输入/输出框
流程线
判断框
连接点
9
顺序结构流程图表示方法 A
B
10
选择结构流程图表示方法
Y
N
条件P
A
B
如果 成绩<60 那么
通知补考
否则
告知你考试成绩
11
循环结构流程图表示方法
条假件P 假
真
A
A
假
条件P
真
当型循环
直到型循环
12
流程图
将例2 求1+2+3+4+…+10 用流程图进行描述。
伪代码
6
自然语言描述
例1 有两个存储单元a和b,要求将它们的值互换。
分析:按存储器的性质,如果将单元a的值直接送到单元b 中,那么就会覆盖掉b原来的内容,因此,需要借助一个 临时单元c来交换。 具体算法如下:
➢步骤1: 将单元a的值送给单元c; ➢步骤2: 将单元b的值送给单元a; ➢步骤3: 将单元c的值送给单元b。
24
整型常量
整型常量有三种不同的表示形式:
十进制:无前缀,无后缀 八进制:在八进制数值前面加前缀“0”,其数码
取值为0~7。 例如:023,0457,01324等 十六进制:前缀为“0X”或“0x”,其数码取值为 0~9、A~F或a~f。例如:0X2A,0XA0, 0XFFFF等
*/ int Add(int a, int b) {
return (a + b); }
/*主函数*/ main() {
int x, y, sum = 0;
程序注释
并列的两个函数 其中一个是 程序的入口
printf("Input two integers:"); scanf("%d%d", &x, &y); sum = Add(x, y); printf("sum = %d\n", sum); }
构造类型 指针类型
整型 int (含枚举类型) 单精度 float
实型(浮点型) 双精度 double 字符型 char 数组 结构体 共用体
空类型 void
21
一个简单的C程序例子 #include <stdio.h>
/*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和
18
例3 求三个数中的最大数。
19
数据类型(Data Type)
数据为什么要区分类型? 不同类型的数据代表不同的
数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类
20
数据类型
在C语言中,数据类型一般包括基本数据类型、构造数据类型、 指针类型和空类型等四大类。
数据类型
基本类型
7
自然语言描述
例2 求1+2+3+4+…+10。 ➢步骤1: 将0送到S中; ➢步骤2: 将1送到n中; ➢步骤3: 把n的值加到S中; ➢步骤4: n增1; ➢步骤5: 若n≤10则转回步骤3,否则执行步骤6; ➢步骤6: 输出S的值。
8
流程图 流程图通常采用一些几何图形来代表各种类型的操作, 在图形内标明文字或符号来表示操作的内容,并用箭头 来表示操作的顺序。 用流程图表示算法,直观形象,易于理解,但由于流程 图允许使用箭头随意跳转,对表示算法的层次结构非常 不利,且流程图占的篇幅较大,作图工作量也很大。
0 => s 1 => n
s+n => s
n+1 => n
n ≤ 10 否
输出s
是
13
N-S图(盒图)
针对流程图存在的缺点,I. Nassi和B. Shneiderman提出 了结构化程序设计的流程图,称为N-S图,更能体现结构 化程序设计的思想。推荐使用N-S图。 N-S图完全去掉了流程线,算法的所有处理步骤都写在一 个大矩形框内(表示简单、符合结构化思想)(象堆积 木) 结构化程序设计的三种基本结构
——顺序结构、选择结构、循环结构
14
N-S图(盒图)
结构化程序设计的三种基本结构具有以下共同的特点: ➢只有一个入口; ➢只有一个出口; ➢结构内的每一部分都有机会被执行到; ➢结构内不存在“死循环”。
15
N-S图(盒图)
将例2 求1+2+3+4+…+10 用N-S图进行描述。
0s 1n n≤10 n+ss n+1n 输出s
第2章 C语言程序设计基础
回顾
C语言的特点 C程序的编译和运行过程 编译器将源程序转换成机器能理解的程序 连接器用于连接相关的目标文件以生成可执
行程序
2
教学目标
算法的表示方法 理解变量和常量的含义 熟悉基本数据类型 ——int、char、float 和
double 掌握算术运算符和赋值运算符的用法 理解表达式 理解类型转换