1
C语言程序设计
2
用于描述计算机程序的符号系统。 C就是这样的一种计算机高级程序设计语言。
程序设计语言程序计算机的指令序列、或者符号化的指令序列、或者语句序列。
程序设计编写、调试程序的过程。
3
程序设计的具体步骤是,
a) 分析问题,收集数据,建立模型 ;
b) 根据模型,拟定解题的算法 ;
c) 选用某种计算机语言描述该算法 ;
d)上机调试运行程序,分析结果 。
4
学习、使用 C语言的理由
1) 贝尔实验室的 Dennis Ritchie 在 1972 年开发 C
的初衷只是作为开发 Unix的工作语言 ( 开发 Unix的一种工具 )。但在过去的 30多年中,C已经成为 一种最重要和最流行的计算机高级程序设计语言。这说明它有很强的生命力,深受欢迎。
5
2) C 已经开始进入长期以来一直属于 FORTRAN 科学计算的编程领域。和 FORTRAN 一样,用 C同样能够容易编写出简洁、易读、高效的科学计算问题的应用程序。
3) 作为一种流行语言,现今大多数文献资料中的算法描述,一般都采用 C来进行。这种现象说明,C 在各种领域中已被公认为一种通用语言。
可以利用它来解决各种实际问题:
6
7
4) C在软件产业中,是一种重要的必备技能。在最想获得的技能中,它一般都列在前 10名。特别在当今嵌入式系统的编程中已经离不开 C 。也就是说,它将用来在汽车、
相机,DVD播放机及其他各种各样的现代化设备中,作为微处理器的编程工具。
因此,至少在 21 世纪的前 10 年中,它仍将保持强劲的势头。
8
5) 在过去的 10年中,许多人从 C转而使用更强大的
C++语言。 C++ 向 C嫁接了面向对象的编程工具,C++
实际上是 C的一个超集,意味着任何 C 程序也是 C++ 程序。学习 C 就是在学习 C++的基本知识。
因此,不管 C++ 这样较新的语言如何流行,学习 C
是通往 C++ 的必由之路。
9
6) 既然 C++是 C的超集,有人可能会建议不如一步到位直接学习 C++。
根据我们的经验,C++ 对初学者来说可能太过于复杂,刚开始学习编写程序,就不得不接触令人恐惧的
Windows API,这可能会欲速而不达。
因此,还应该先从基本学起。这样可为进一步学习
C++及其他语言打好基础。
10
7) 有些人对 C存有一种偏见,认为 C是 DOS时代的东西,现在是 Windows时代了,还用得着学习 C语言吗?
其实 C 语言的编程环境有很多选择,如果您想摆脱 DOS,
进入 Windows 编程领域,完全可以选用 一种 Windows平台下的编译工具。
8) C 语言是各种计算机基础知识和应用能力等级考试指定的程序设计语言之一,学习这门课后,您可以应付诸如此类的 各种考试。
11
总之,C是重要的编程语言。如果您去应聘编程工作,大概您被问的第一个问题就是,,请问,您会使用
C 吗?”
9) C语言是几门后继计算机课程的基础。例如,数据结构,,其中的算法都是以 C或 C++ 描述的。这对学好相关的后继课程是必须且有很大帮助的。
12
学习 C语言的方法
C程序设计是一门实践性很强的课程,既要掌握概念又要动手编程,还要上机调试程序。
1) 一定要重视上机实践环节。上机会帮你巩固概念,
掌握语法。实际上 C 编译程序是最好的老师,它会详细的给你解释程序中所有的问题。 包括出错的原因,位置等等。
一定要认真阅读 C编译程序给出的信息,按提示纠正所有的错误。
13
2) 像学习游泳那样来学习 C语言程序设计。学习游泳有两种方法:
一种是先站在岸上看别人是如何游的,看得差不多了再下水游,这种方法可能少走弯路,学起来可能也快但不深刻。 本教材配有,C程序设计题解与上机指导,可以模仿。
另一种方法是不管三七二十一,先跳下水去游两下再说,当喝了几口水之后,上岸来冷静思考一下问题出在什么地方,然后再下水去游,如此反复,你最终会掌握游泳技术,而且会非常深刻。
14
3) 尝试多种方法。 某一个问题可能有多种解决方法,
不要问题一解决就心安理得,应该寻求最好的方法。这就与画画一样,同一幅画,不同的人可能画出不同的效果,有人画的很精湛,而有人则画的很烂。
但我们建议不要刻意去精雕细刻,讲究的是方法而不是让别人甚至过了一段时间连自己都看不懂。我们学习 C不是去准备参加 C的模糊代码竞赛。
15
4) 养成良好的编程习惯及风格。 首先要弄清问题,然后收集数据,拟定算法,画出流程,再着手编程。 否则往往事倍功半。
程序要清晰易懂,易修改。按规范化的方式书写。适当插入空行、空格、及程序注解。
程序中要反复使用的程序段应写成函数,且要尽量使用库函数。
16
学习 C语言的参考资料
1),C Primer Plus,中文版第四版人民邮电出版社 2002.7
2),C 程序设计教程,
苏州大学出版社 1997.5
3),C高级实用程序设计,
清华大学出版社 1996.1
4),C 程序设计教程,
机械工业出版社 2000.7
17
5),C 语言大全,中文版第四版电子工业出版社 2001.9
6),C 应用程序设计技术,
清华大学出版社 1994.8
7),二级 C 语言考试考点与题解,
金版电子出版公司 2004.9
8),江苏省二级 C 语言等级考试试题汇编,
苏州大学出版社 2000.5
18
第 1章 C语言概述
1962年开发,面向问题求解过程、适合数值计算、结构严谨的算法语言。 不能直接操作硬件,不适合写系统软件。
1.1 C语言出现的历史背景一、发展历史
ALGOL ( Algorithmic Language )
19
1970年,贝尔实验室的 Ken Thompson开发,实现了第一个 UNIX 操作系统。
1963年剑桥大学开发的,能够直接对硬件进行操作的语言。
CPL ( Combined Programming Language )
BCPL ( Basic CPL )
1967年由 Martin Richards 根据 CPL改写的,能够直接进行硬件操作的无类型语言。
B语言
20
C语言
1972年,贝尔实验室的 W,Kernighan 和 D,M,Ritchie
扩充,改进了B形成了C语言,并用 C改写了 UNIX 90%
的代码。
C++语言
1980年,贝尔实验室的 B.Troustrup及同事改进和扩充了 C,把 Simula-67中的类概念 (class)引入 C中,83年 Rick
Maseitti提议将改进后的 C语言命名为 C++ 。
21
二,C语言标准
1978年,Brian W.Kernighan 和 D,M.Ritchi合写名著
,The C Programming Language,称为:
K&R C ( 当时公认的 C语言标准 )
1987年,ANSI 为 C 语言制定了统一标准,称为,
87 ANSI 标准 C
1989年,ISO 为 C 语言制定了国际标准,称为:
C89
1999年,ISO 为 C 语言制定了新的国际标准,称为:
C99
22
1.2 C语言的特点
1) 结构化程序设计语言。
2) 中级语言。
3) 模块化程序结构。
4) 可移植性好。
5) 运算符丰富(特别是指针与位运算)。
6) 数据结构丰富。
7) 可直接操作硬件。
8) 语法限制松,表达自由度与灵活性大。
23
与所有其他程序设计语言一样,当然 C语言也有它的不足之处,
1) 语法不太严格,灵活性大,调试程序困难。
2)不进行运行时的错误检查。
3)非强类型语言,类型转换随便。
4)运算符分级较多、程序难理解。因此,C 有一年一度的,含糊代码” ( Obfuscated Code )竞赛。
24
1.3 简单的 C程序介绍
#include < stdio,h >
main ( )
{
int number ;
printf (,books =,) ;
scanf (,%d”,&number ) ;
printf (,我有 %d本书 \n”,number ) ;
}
一、程序举例例 1,一个简单的 C 程序
25
S1,输入三个实数 ;
S2,求和并计算和的平方根 ;
S3,计算三个数中的最小值 ;
S4,输出结果 。
例 2,输入三个实数,求它们和的平方根,输出这三个实数中的最小值。
算法,
源程序如下,
26
/* This is an example */
#include <stdio.h>
#include <math.h>
float min ( float a,float b,float c ) ;
main( )
{
float n1,n2,n3,st,smin ;
printf (,Input 3 real numbers:,) ;
scanf (,%f %f %f,,&n1,&n2,&n3 ) ;
st = sqrt ( n1 + n2 + n3) ;
smin = min ( n1,n2,n3) ;
printf(,\n sqrt is %f \n the min is %f,,st,smin ) ;
}
27
float min ( float a,float b,float c )
{
if ( a <= b && a <= c )
return a ;
else
if ( b <= a && b <= c )
return b ;
else
return c ;
}
28
二,C语言源程序的结构与组成
file1,c
file2,c
file3,c
……
filen,c
一个完整的 C源 程序由一个或若干个源程序文件组成,
29
其中,一个 C源程序文件由一个或 若干个函数定义,外部对象声明 与 说明 及 预处理命令 组成,
30
函数是完成特定算法的程序段,由 函数头部 和 函数体组成。
函数头部包含有函数名、存储类型、函数类型及参数说明。
函数体是一个分程序 ( 一对 {……} 括住的部分 ),其中包含一些 (也可以没有任何内容 ) 声明、说明语句和动作语句。
函数的一般定义形式:
31
注意,
1) 这些源文件中 必须含有一个,也 仅能 含有一个 称为 main的函数(主函数) ; 主函数在源文件中的位置不限,不必是源程序文件中的第一个函数。
2) 一个 C程序可放在一个或多个源文件中;
3) 不能将一个函数跨放在两个不同的源文件中;
4) 最简单的情况,一个 C程序由一个源文件组成,该文件中只有一个函数,即 main 函数。
5) 函数体内不能再定义其他函数 !
32
三,C程序的执行
⑴ 程序 总是 从 main的第一个动作语句开始执行,其中可以调用其他函数。
⑵ 除 main函数外,所有其他函数都可以相互调用,且可以自己调用自己。
⑶ main函数只能调用其他函数,不能自己调用自己。
⑷ 在正常情况下,执行完 main的最后一条语句,则整个程序执行结束。
33
四,C程序的书写格式
⑴ 书写格式自由,可从一行的任何位置开始书写。
⑵ 一行可写多条语句,一条语句也可写在多行上,但不能在有独立含义的语言元素等对象 (标识符、关键字、
运算符、常数等) 中间拆分,如果必要则可以用反斜杠符号,\” 来处理续行。
⑶ 应在适当位置插入适量空格和空行,它们对程序没有影响,但不能在有独立含义的语言元素等对象中插入空格。
34
⑷ 可在程序中任何需要的地方以 /*……*/ 形式插 入注解,
注解不能嵌套 。注解的位置与多少对程序没有影响,编译时它们将被忽略。
⑸ C语言区分大小写字母。如,aBc不同于 abc 。
⑹ 语句,变量声明,及变量说明的最后必 须以分号结束
,;,,但函数定义的头部后不能有分号。
⑺ 预处理命令后不能有分号( 因为它们不是 C 语言的语言成 分)。
35
1.4 C程序的开发与上机步骤
36
一,C程序上机开发步骤
⑴ 运行集成开发软件(如 TC 2.0)
⑵ 输入源程序,修改,保存到文件 (如文件名,a,C )
⑶ 执行,编译,命令( Compile)。 预处理程序对源程序作预处理;编译程序对源程序作语法检查;若编译成功,
则生成目标代码文件 (如 a,obj)否则转到步骤⑵,修改源代码 。
⑷ 执行,连接” 命令 ( Link )。连接目标代码与库函数代码,
若连接成功,则生成可执行程序文件(例如,a,exe),
否则转到步骤 ⑵,修改源代码 。⑸ 执行“运行”命令 (Run) 。加载可执行程序文件到内存并运行,若结果正确结束;否则转到步骤 ⑵,修改源代码 。⑹ 退出集成开发环境软件。
37
二,Turbo C开发环境的使用
F1 获得相关帮助信息。
F2 将编辑的文件存盘。
F5 放大 /缩小活动窗口。
F6 开 /关窗口 (在 edit窗口与 message窗口之间切换 )。
F7 在调试方式下运行程序,每次执行一行。也跟踪进入被调用的函数。
F8 在调试方式下运行程序,每次执行一行。不跟踪进入被调用的函数 。
⑴ Turbo C开发环境中常用的功能键与热键
38
Ctrl-F2 中止当前调试( 相当于 Program Reset 命令)。
Ctrl-F9 运行程序。编译,连接、装入及运 行操作同时完成,相当于 Run命令。
Alt-F5 回到用户屏幕,查看程序运行结果。
Alt-F9 仅编译,生成,obj 文件。
39
Ctrl-Y 删除一行
Ctrl-N 插入一空行
Ctrl-QF 查找
Ctrl-I 重复上次查找
Ctrl-QA 查找并替换
⑵ 常用编辑命令
40
Ctrl-KK 块结束标志。
Ctrl-KB 块开始标志。
Ctrl-KC 复制块到光标点。
Ctrl-KV 移动块到光标点。
Ctrl-KY 删除块。
Ctrl-KH 隐藏 /显示块标志。
Ctrl-KW 块作为文件写盘。
Ctrl-KR 将文件作为块读入到编辑区。
⑶ 块操作命令
41
⑷ C程序开发过程中可能产生的错误种类灾难性错误 系统内部出错,将立即停止编译 。
编译期错误 语法或语义错,系统将继续编译 。
连接错误 装配目标程序时发现的错误,通常由函数名写错引起。
运行期错误 程序运行中发现的错误。
警告性提示 对一些可能引起错误的源代码,系统将给出警告性提示信息,然后继续编译。