《c语言设计》

下载本书

添加书签

c语言设计- 第4部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
? mon error 常见的警告错误。
? Less mon error 少见的警告错误。
7) Names :用于改变段(segment)、组(group) 和类(class)的名字;默认值为 CODE; DATA;
BSS。
2。 Linker:本菜单设置有关连接的选择项; 它有以下内容,如图所示:
1) Map file menu 选择是否产生。MAP 文件。
2) Initialize segments 是否在连接时初始化没有初始化的段。
3) Devault libraries 是否在连接其它编译程序产生的目标文件时去寻找其缺省库。
4) Graphics library 是否连接 graphics 库中的函数。
5) Warn duplicate symbols 当有重复符号时产生警告信息。
6) Stack warinig 是否让连接程序产生 No stack 的警告信息。
7) Case…sensitive link 是否区分大、小写字。
3。 Environment:菜单规定是否对某些文件自动存盘及制表键和屏幕大小的设置,它有以下
内容,如图所示:


1) Message tracking:

谭浩强      C 语言程序设计               2001 年 5 月 1 日

? Current file 跟踪在编辑窗口中的文件错误。
? All files 跟踪所有文件错误。
? Off 不跟踪。
2) Keep message :编译前是否清除 Message 窗口中的信息。
3) Config auto save:选 on 时; 在 Run; Shell 或退出集成开发环境之前;如果 Turbo C 2。0
的配置被改过;   则所做的改动将存入配置文件中。选 off 时不存。
4) Edit auto save:是否在 Run 或 Shell 之前; 自动存储编辑的源文件。
5) Backup file:是否在源文件存盘时产生后备文件(。BAK 文件)。
6) Tab size:设置制表键大小; 默认为 8。
7) Zoomed windows:将现行活动窗口放大到整个屏幕; 其热键为 F5。
8) Screen size 设置屏幕文本大小。
4。 Directories:规定编译、连接所需文件的路径; 有下列各项,如图所示:


谭浩强      C 语言程序设计               2001 年 5 月 1 日
(1) Include directories:包含文件的路径; 多个子目录用〃;〃分开。
(2) Library directories:库文件路径; 多个子目录用〃;〃分开。
(3) Output directoried:输出文件(。OBJ; 。EXE; 。MAP 文件)的目录。
(4) Turbo C directoried:Turbo C  所在的目录。
(5) Pick file name:定义加载的 pick 文件名;   如不定义则从 currentpick file 中取。
5。 Arguments:允许用户使用命令行参数。
6。 Save options:保存所有选择的编译、连接、调试和项目到配置文件中; 缺省的配置文件
为 TCCONFIG。TC。
7。 Retrive options 装入一个配置文件到 TC 中; TC 将使用该文件的选择项。
1。13。9 Debug 菜单
按 Alt+D 可选择 Debug 菜单; 该菜单主要用于查错; 它包括以下内容,如图所示:

1。 Evaluate

谭浩强      C 语言程序设计               2001 年 5 月 1 日

1) Expression 要计算结果的表达式。
2) Result 显示表达式的计算结果。
3) New value 赋给新值。
2。 Call stack:该项不可接触。而在 Turbo C debuger  时用于检查堆栈情况。
3。 Find function 在运行 Turbo C debugger 时用于显示规定的函数。
4。 Refresh display 如果编辑窗口偶然被用户窗口重写了可用此恢复编辑窗口的内容。
1。13。10 Break/watch 菜单
按 Alt+B 可进入 Break/watch 菜单; 该菜单有以下内容,如图所示:
1。 Add watch: 向监视窗口插入一监视表达式。


谭浩强      C 语言程序设计               2001 年 5 月 1 日
2。 Delete watch:从监视窗口中删除当前的监视表达式。
3。 Edit watch:在监视窗口中编辑一个监视表达式。
4。 Remove all  :watches 从监视窗口中删除所有的监视表达式。
5。 Toggle breakpoint:对光标所在的行设置或清除断点。
6。 Clear all breakpoints:清除所有断点。
7。 View next breakpoint:将光标移动到下一个断点处。
1。13。11 Turbo C 2。0 的配置文件
所谓配置文件是包含 Turbo C 2。0 有关信息的文件; 其中存有编译、连接的选择和路径等
信息。可以用下述方法建立 Turbo C 2。0 的配置:
1。 建立用户自命名的配置文件:可以从 Options 菜单中选择 Options/Save options 命令;   将
当前集成开发环境的所有配置存入一个由用户命名的配置文件中。下次启动 TC 时只要
在 DOS 下键入:
tc/c
就会按这个配置文件中的内容作为 Turbo C 2。0 的选择。
2。 若设置 Options/Environment/Config auto save  为on;  则退出集成开发环境时; 当前的设置
会自动存放到 Turbo C 2。0 配置文件 TCCONFIG。TC 中。Turbo C  在启动时会自动寻找这
个配置文件。
3。 用 TCINST 设置 Turbo C 的有关配置; 并将结果存入 TC。EXE 中。Turbo C  在启动时; 若
没有找到配置文件; 则取 TC。EXE 中的缺省值。

一个程序应包括:

谭浩强      C 语言程序设计               2001 年 5 月 1 日
2 程序的灵魂—算法

? 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data
structure)。
? 对操作的描述。即操作步骤,也就是算法(algorithm)。
Nikiklaus Wirth 提出的公式:
数据结构+算法=程序
教材认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
这 4 个方面是一个程序涉及人员所应具备的知识。
本课程的目的是使同学知道怎样编写一个 C 程序,进行编写程序的初步训练,因此,
只介绍算法的初步知识。
2。1 算法的概念
做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。
? 计算机算法:计算机能够执行的算法。
? 计算机算法可分为两大类:
? 数值运算算法:求解数值;
? 非数值运算算法:事务管理领域。
2。2 简单算法举例
【例 2。1】求 1×2×3×4×5。
最原始方法:
步骤 1:先求 1×2,得到结果 2。
步骤 2:将步骤 1 得到的乘积 2 乘以 3,得到结果 6。
步骤 3:将 6 再乘以 4,得 24。
步骤 4:将 24 再乘以 5,得 120。
这样的算法虽然正确,但太繁。
改进的算法:
S1: 使 t=1
S2: 使 i=2
S3: 使 t×i;  乘积仍然放在在变量 t 中,可表示为 t×i→t
S4: 使 i 的值+1,即 i+1→i


谭浩强      C 语言程序设计               2001 年 5 月 1 日
S5: 如果 i≤5; 返回重新执行步骤 S3 以及其后的 S4 和 S5;否则,算法结束。
如果计算 100!只需将 S5:若 i≤5 改成 i≤100 即可。
如果该求 1×3×5×7×9×11,算法也只需做很少的改动:
S1: 1→t
S2: 3→i
S3: t×i→t
S4: i+2→t
S5:若 i≤11;  返回 S3,否则,结束。
该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环
轻而易举。
思考:若将 S5 写成:S5:若 i<11; 返回 S3;否则,结束。
【例 2。2】有 50 个学生,要求将他们之中成绩在 80 分以上者打印出来。
如果,n表示学生学号,ni表示第个学生学号;g表示学生成绩,gi表示第个学生成绩;
则算法可表示如下:
S1: 1→i
S2: 如果gi≥80,则打印ni和gi,否则不打印
S3: i+1→i
S4:若 i≤50;  返回 S2,否则,结束。
【例 2。3】判定 2000  — 2500 年中的每一年是否闰年,将结果输出。
润年的条件:
1) 能被 4 整除,但不能被 100 整除的年份;
2) 能被 100 整除,又能被 400 整除的年份;
设 y 为被检测的年份,则算法可表示如下:
S1: 2000→y
S2:若 y 不能被 4 整除,则输出 y“不是闰年”,然后转到 S6
S3:若 y 能被 4 整除,不能被 100 整除,则输出 y“是闰年”,然后转到 S6
S4:若 y 能被 100 整除,又能被 400 整除,输出 y“是闰年” 否则输出 y“不是闰年”,
然后转到 S6
S5:输出 y“不是闰年”。
S6:y+1→y
S7:当 y≤2500 时; 返回 S2 继续执行,否则,结束。

1

1

1

1

谭浩强      C 语言程序设计               2001 年 5 月 1 日
1

1 ? + ? + 。。。 + ?

【例 2。4】求

2

3

4

99

100 。

算法可表示如下:
S1: sigh=1
S2: sum=1
S3: deno=2
S4: sigh=(…1)×sigh
S5: term= sigh×(1/deno )
S6: term=sum+term
S7: deno= deno +1
S8:若 deno≤100,返回 S4;否则,结束。
【例 2。5】对一个大于或等于 3 的正整数,判断它是不是一个素数。
算法可表示如下:
S1: 输入 n 的值
S2: i=2
S3: n 被 i 除,得余数 r
S4:如果 r=0,表示 n 能被 i 整除,则打印 n“不是素数”,算法结束;否则执行 S5
S5: i+1→i
S6:如果 i≤n…1,返回 S3;否则打印 n“是素数”;然后算法结束。
改进:
S6:如果i≤ n ,返回S3;否则打印n“是素数”;然后算法结束。


2。3 算法的特性

谭浩强      C 语言程序设计               2001 年 5 月 1 日

? 有穷性:一个算法应包含有限的操作步骤而不能是无限的。
? 确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。
? 有零个或多个输入。
? 有一个或多个输出。
? 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。
对于程序设计人员,必须会设计算法,并根据算法写出程序。
2。4 怎样表示一个算法
2。4。1 用自然语言表示算法
除了很简单的问题,一般不用自然语言表示算法。
2。4。2 用流程图表示算法
流程图表示算法,直观形象,易于理解。
【例 2。6】将例 2。1 求 5!的算用流程图表示。


谭浩强      C 语言程序设计               2001 年 5 月 1 日
【例 2。7】将例 2。2 的算用流程图表示。

谭浩强      C 语言程序设计               2001 年 5 月 1 日
【例 2。8】将例 2。3 判定闰年的算用流程图表示。

1

1

1

谭浩强      C 语言程序设计               2001 年 5 月 1 日
1 1

1 ? + ? + 。。。 + ?

【例 2。9】将例 2。4 求
一个流程图包括:

2

3

4

99

100 的算用流程图表示。

1。 表示相应操作的框;
2。 带箭头的流程线;
3。 框内外必要的文字说明。


谭浩强      C 语言程序设计               2001 年 5 月 1 日
2。4。3 三种基本结构和改进的流程图
1。 顺序结构:
2。 选择结构:
3。 循环结构

三种基本结构的共同特点:
? 只有一个入口;
? 只有一个出口;

谭浩强      C 语言程序设计               2001 年 5 月 1 日

? 结构内的每一部分都有机会被执行到;
? 结构内不存在“死循环”。
2。4。4 用 N…S 流程图表示算法
1973 年美国学者提出了一种新型流程图:N…S 流程图。
顺序结构:


选择结构:
循环结构:
2。4。5 用伪代码表示算法

谭浩强      C 语言程序设计               2001 年 5 月 1 日

伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法。


谭浩强      C 语言程序设计               2001 年 5 月 1 日
2。4。6 用计算机语言表示算法
? 我们的任务是用计算机解题,就是用计算机实现算法;
? 用计算机语言表示算法必须严格遵循所用语言的语法规则。
【例 2。20】求 1×2×3×4×5 用 C 语言表示。
main()
{int i;t;
 t=1;
 i=2;
 while(i
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架