适用于天津师范大学
谭浩强
书籍介绍:
图书简介:
C语言功能丰富,使用灵活,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,现可以用来编写系统软件,又可用于编写应用软件,是国内外广泛使用的计算机语言。C程序设计是计算机应用人员应掌握的基本功。 针对许多人想学C语言而C语言又难学的情况,作者在1991年编写出版了一本《C程序设计》教材,由清华大学出版社出版。该书采用了新的体系结构,分散难点,减小台阶,用人们易于理解的方式叙述清楚复杂的概念,受到广大读者的欢迎。许多人说,看了这本书,感到C语言不难学了。许多高职和大专学校选用这本书作为教材,收到很好的效果。因此在讨论编写“高职高专计算机系列教材”时,许多学校的同志一致推荐《C程序设计》作为高职高专的教材。作者根据大家的意见,在《C程序设计》一书的基础上,做了必要的修改与补充,编写出这本《C语言程序设计》,供高职高专的师生使用。 在这本书中,保留了《C程序设计》一书的特点:体系合理、逻辑清楚、例题丰富、通俗易懂。同时又根据C语言新标准的规定,对该书进行了改写,使之符合当前的需要。 程序设计是一门实践性很强的课程,不可能只靠听课和看书就能掌握C语言程序设计。应当十分重视自己动手编写程序和上机运行程序。上机的时间愈多愈好。 为了帮助读者学习本书,作者还编写了一本《C语言程序设计题解与上机指导》,提供本书中各章习题的参考答案以及上机实习指导。 本书是高职高专学生学习C语言程序设计的理想教材。凡具有计算机初步知识的读者都能读懂本书。本书也可作为C语言培训教材,也可供自学参考。 本书配有电子教案。
前言
程序设计是软件工作人员的基本功。在高等学校,一般都开设程序设计课程,根据不同的需要选用不同的计算机语言。C语言由于其功能强、使用灵活、可移植性好、目标程序质量好而受到广泛的欢迎。所有的计算机专业和许多理工科专业都开设C语言程序设计课程。C语言已成为软件工作者必须掌握的一个工具。
C语言既具有高级语言的优点,又具有低级语言的许多特点,既可以用来编写系统软件,又可以用来编写应用软件。C语言语法限制不严格,程序设计自由度大,在使用时会出现一些“副作用”,因此掌握C语言要比掌握一门其他高级语言相对难一些。所以,学习C语言最好有学习过一门其他语言(如QBASIC)的基础。
针对许多人想学C语言而C语言又难学的情况,作者在1991年编写出版了一本《C程序设计》教材,由清华大学出版社出版。该书采用了新的体系结构,分散难点,减小台阶,用人们易于理解的方式叙述清楚复杂的概念,受到广大读者的欢迎。许多人说,看了这本书,感到C语言不难学了。许多高职和大专学校选用这本书作为教材,收到很好的效果。
为了满足高职高专教学改革的需要,我们决定组织出版“高职高专计算机系列教材”。在讨论编写教材时,许多学校的同志一致推荐《C程序设计》作为高职高专的教材。作者根据大家的意见,在《C程序设计》一书的基础上,做了必要的修改与补充,编写出这本《C语言程序设计》,供高职高专的师生使用。
在这本书中,保留了《C程序设计》一书的特点:体系合理、逻辑清楚、例题丰富、通俗易懂。同时又根据C语言新标准的规定,对该书进行了改写,使之符合当前的需要。
学习C语言时有一点应当注意:应该把精力放在最基本、最常用的内容上。开始时不要钻牛角尖,在一些具体细节上死抠。有一些细节,随着对C语言的了解逐步深入和实践经验的逐步丰富,会自然地掌握的,而有一些细节则要通过长期的实践才能真正熟练掌握。开始时切忌滥用C的某些容易引起错误的细节(如不适当地使用++和--)。
程序设计是一门实践性很强的课程,不可能只靠听课和看书就能掌握C语言程序设计。应当十分重视自己动手编写程序和上机运行程序。上机的时间愈多愈好。
为了帮助读者学习本书,作者还编写了一本《C语言程序设计题解与上机指导》,提供本书中各章习题的参考答案以及上机实习指导,由清华大学出版社于2000年出版。
本书如有不足之处,请读者指正。
谭浩强
2000年1月于北京
目录: 003791-01.txt
目录
第1章C语言概述11.1C语言出现的历史背景1
1.2C 语言的特点2
1.3简单的C程序介绍4
1.4C程序的上机步骤7
习题12
第2章数据类型、运算符与表达式132.1C 的数据类型13
2.2常量与变量14
2.2.1常量和符号常量14
2.2.2变量15
2.3整型数据16
2.3.1整型常量的表示方法16
2.3.2整型变量17
2.3.3整型常量的类型21
2.4实型数据21
2.4.1实型常量的表示方法21
2.4.2实型变量22
2.4.3实型常量的类型23
2.5字符型数据24
2.5.1字符常量24
2.5.2字符变量25
2.5.3字符数据在内存中的存储形式及其使用方法26
2.5.4字符串常量28
2.6变量赋初值29
2.7各类数值型数据间的混合运算30
2.8算术运算符和算术表达式30
2.8.1C运算符简介30
2.8.2算术运算符和算术表达式31
2.9赋值运算符和赋值表达式35
2.10逗号运算符和逗号表达式39
习题41
第3章最简单的C程序设计——顺序程序设计43
3.1C语句概述43
3.2程序的三种基本结构45
3.3赋值语句47
3.4数据输入输出的概念及在C语言中的实现47
3.5字符数据的输入输出48
3.5.1 putchar函数(字符输出函数)48
3.5.2 getchar函数(字符输入函数)49
3.6格式输入与输出50
3.6.1printf函数(格式输出函数)50
3.6.2scanf函数(格式输入函数)56
3.7顺序结构程序设计举例60
习题62
第4章选择结构程序设计644.1关系运算符和关系表达式64
4.1.1关系运算符及其优先次序64
4.1.2关系表达式65
4.2逻辑运算符和逻辑表达式65
4.2.2逻辑运算符及其优先次序66
4.2.2逻辑表达式66
4.3if 语句68
4.3.1if语句的三种形式69
4.3.2if语句的嵌套71
4.3.3条件运算符73
4.4switch语句75
4.5程序举例77
习题82
第5章循环控制835.1概述83
5.2goto语句以及用goto语句构成循环83
5.3while语句84
5.4do\|while语句85
5.5for 语句87
5.6循环的嵌套90
5.7几种循环的比较91
5.8break语句和continue语句92
5.8.1break语句92
5.8.2continue语句92
5.9程序举例93
习题98
第6章数组996.1一维数组的定义和引用99
6.1.1一维数组的定义99
6.1.2一维数组元素的引用100
6.1.3一维数组的初始化100
6.1.4一维数组程序举例101
6.2二维数组的定义和引用103
6.2.1 二维数组的定义103
6.2.2二维数组的引用104
6.2.3二维数组的初始化104
6.2.4二维数组程序举例105
6.3字符数组107
6.3.1字符数组的定义107
6.3.2字符数组的初始化107
6.3.3字符数组的引用108
6.3.4字符串和字符串结束标志109
6.3.5字符数组的输入输出110
6.3.6字符串处理函数112
6.3.7字符数组应用举例115
习题118
第7章函数1207.1概述120
7.2函数定义的一般形式121
7.3函数参数和函数的值123
7.3.1形式参数和实际参数123
7.3.2函数的返回值125
7.4函数的调用127
7.4.1函数调用的一般形式127
7.4.2函数调用的方式128
7.4.3对被调用函数的声明和函数原型129
7.5函数的嵌套调用132
7.6函数的递归调用135
7.7数组作为函数参数141
7.8局部变量和全局变量146
7.8.1局部变量146
7.8.2全局变量147
7.9变量的存储类别150
7.9.1动态存储方式与静态存储方式150
7.9.2auto变量150
7.9.3用static声明局部变量151
7.9.4register变量153
7.9.5用extern声明外部变量154
7.9.6用static声明外部变量156
7.9.7关于变量的声明和定义156
7.9.8存储类别小结157
7.10内部函数和外部函数159
7.10.1内部函数159
7.10.2外部函数160
7.11如何运行一个多文件的程序162
习题163
第8章预处理命令165
8.1宏定义165
8.1.1不带参数的宏定义165
8.1.2带参数的宏定义168
8.2“文件包含”处理172
8.3条件编译175
习题178
第9章指针180
9.1地址和指针的概念180
9.2变量的指针和指向变量的指针变量182
9.2.1定义一个指针变量182
9.2.2指针变量的引用183
9.2.3指针变量作为函数参数186
9.3数组的指针和指向数组的指针变量190
9.3.1指向数组元素的指针190
9.3.2通过指针引用数组元素191
9.3.3用数组名作函数参数195
9.3.4指向多维数组的指针和指针变量203
9.4字符串的指针和指向字符串的指针变量212
9.4.1字符串的表示形式212
9.4.2字符串指针作函数参数215
9.4.3对使用字符指针变量和字符数组的讨论218
9.5函数的指针和指向函数的指针变量220
9.5.1用函数指针变量调用函数220
9.5.2用指向函数的指针作函数参数222
9.6返回指针值的函数225
9.7指针数组和指向指针的指针228
9.7.1指针数组的概念228
9.7.2指向指针的指针231
9.7.3指针数组作main函数的形参233
9.8有关指针的数据类型和指针运算的小结235
9.8.1有关指针的数据类型的小结235
9.8.2指针运算小结235
9.8.3void指针类型237
习题238
第10章结构体与共用体24010.1概述240
10.2定义结构体类型变量的方法241
10.3结构体变量的引用243
10.4结构体变量的初始化244
10.5结构体数组245
10.5.1定义结构体数组245
10.5.2结构体数组的初始化246
10.5.3结构体数组应用举例246
10.6指向结构体类型数据的指针248
10.6.1指向结构体变量的指针248
10.6.2指向结构体数组的指针249
10.6.3用结构体变量和指向结构体的指针作
函数参数251
10.7用指针处理链表253
10.7.1链表概述253
10.7.2简单链表254
10.7.3处理动态链表所需的函数255
10.7.4建立动态键表256
10.7.5输出链表259
10.7.6对链表的删除操作259
10.7.7对链表的插入操作262
10.7.8对链表的综合操作264
10.8共用体267
10.8.1共用体的概念267
10.8.2共用体变量的引用方式268
10.8.3共用体类型数据的特点269
10.9枚举类型271
10.10用typedef定义类型274
习题277
第11章位运算27811.1位运算符和位运算278
11.1.1“按位与”运算符(&)278
11.1.2按位或运算符(|)279
11.1.3“异或”运算符(∧)280
11.1.4“取反”运算符(~)281
11.1.5左移运算符(<<)282
11.1.6右移运算符(>>)282
11.1.7位运算赋值运算符283
11.1.8不同长度的数据进行位运算283
11.2位运算举例283
11.3位段285
习题288
第12章文件290
12.1 C文件概述290
12.2文件类型指针291
12.3文件的打开与关闭292
12.3.1文件的打开(fopen函数)292
12.3.2文件的关闭(fclose函数)294
12.4文件的读写295
12.4.1fputc函数和fgetc函数(putc函数和getc函数)295
12.4.2fread函数和fwrite函数299
12.4.3fprintf函数和fscanf函数302
12.4.4其他读写函数303
12.5文件的定位305
12.5.1rewind函数305
12.5.2fseek函数和随机读写305
12.5.3ftell函数306
12.6出错的检测307
12.6.1ferror函数307
12.6.2clearerr函数307
12.7文件输入输出小结307
习题308
第13章常见错误和程序调试309
13.1常见错误分析309
13.2程序调试322
附录Ⅰ常用字符与ASCII代码对照表324
附录ⅡC语言中的关键字325
附录Ⅲ运算符和结合性325
附录ⅣC语言常用语法提要327
附录ⅤC库函数331
参考文献338