《C程序设计(第四版)》是由谭浩强编著,2010年清华大学出版社出版的中国高等院校计算机基础教育课程体系规划教材。该书可作为高等学校各专业的正式教材,也是一本自学的教材。
全书共9章,主要内容包括程序设计和C语言,最简单的C程序设计——顺序程序设计,选择结构程序设计,循环结构程序设计等。
目录
- 第1章程序设计和C语言1
- 1.1什么是计算机程序1
- 1.2什么是计算机语言1
- 1.3C语言的发展及其特点3
- 1.4最简单的C语言程序5
- 1.4.1最简单的C语言程序举例6
- 1.4.2C语言程序的结构10
- 1.5运行C程序的步骤与方法12
- 1.6程序设计的任务14
- 习题15
- 第2章算法——程序的灵魂16
- 2.1什么是算法16
- 2.2简单的算法举例17
- 2.3算法的特性21
- 2.4怎样表示一个算法22
- 2.4.1用自然语言表示算法22
- 2.4.2用流程图表示算法22
- 2.4.3三种基本结构和改进的流程图26
- 2.4.4用NS流程图表示算法28
- 2.4.5用伪代码表示算法31
- 2.4.6用计算机语言表示算法32
- 2.5结构化程序设计方法34
- 习题36
- 第3章最简单的C程序设计——顺序程序设计37
- 3.1顺序程序设计举例37
- 3.2数据的表现形式及其运算39
- 3.2.1常量和变量39
- 3.2.2数据类型42
- 3.2.3整型数据44
- 3.2.4字符型数据47
- 3.2.5浮点型数据49
- 3.2.6怎样确定常量的类型51
- 3.2.7运算符和表达式52
- 3.3C语句57
- 3.3.1C语句的作用和分类57
- 3.3.2最基本的语句——赋值语句59
- 3.4数据的输入输出65
- 3.4.1输入输出举例65
- 3.4.2有关数据输入输出的概念67
- 3.4.3用printf函数输出数据68
- 3.4.4用scanf函数输入数据75
- 3.4.5字符数据的输入输出78
- 习题82
- 第4章选择结构程序设计85
- 4.1选择结构和条件判断85
- 4.2用if语句实现选择结构87
- 4.2.1用if语句处理选择结构举例87
- 4.2.2if语句的一般形式89
- 4.3关系运算符和关系表达式91
- 4.3.1关系运算符及其优先次序91
- 4.3.2关系表达式92
- 4.4逻辑运算符和逻辑表达式92
- 4.4.1逻辑运算符及其优先次序93
- 4.4.2逻辑表达式94
- 4.4.3逻辑型变量96
- 4.5条件运算符和条件表达式97
- 4.6选择结构的嵌套99
- 4.7用switch语句实现多分支选择结构102
- 4.8选择结构程序综合举例105
- 习题111
- 第5章循环结构程序设计114
- 5.1为什么需要循环控制114
- 5.2用while语句实现循环115
- 5.3用do…while语句实现循环117
- 5.4用for语句实现循环120
- 5.5循环的嵌套124
- 5.6几种循环的比较125
- 5.7改变循环执行的状态125
- 5.7.1用break语句提前终止循环126
- 5.7.2用continue语句提前结束本次循环127
- 5.7.3break语句和continue语句的区别128
- 5.8循环程序举例131
- 习题140
- 第6章利用数组处理批量数据142
- 6.1怎样定义和引用一维数组142
- 6.1.1怎样定义一维数组143
- 6.1.2怎样引用一维数组元素144
- 6.1.3一维数组的初始化145
- 6.1.4一维数组程序举例146
- 6.2怎样定义和引用二维数组148
- 6.2.1怎样定义二维数组149
- 6.2.2怎样引用二维数组的元素150
- 6.2.3二维数组的初始化151
- 6.2.4二维数组程序举例152
- 6.3字符数组154
- 6.3.1怎样定义字符数组154
- 6.3.2字符数组的初始化155
- 6.3.3怎样引用字符数组中的元素155
- 6.3.4字符串和字符串结束标志156
- 6.3.5字符数组的输入输出159
- 6.3.6使用字符串处理函数161
- 6.3.7字符数组应用举例165
- 习题168
- 第7章用函数实现模块化程序设计170
- 7.1为什么要用函数170
- 7.2怎样定义函数172
- 7.2.1为什么要定义函数172
- 7.2.2定义函数的方法173
- 7.3调用函数174
- 7.3.1函数调用的形式174
- 7.3.2函数调用时的数据传递175
- 7.3.3函数调用的过程177
- 7.3.4函数的返回值178
- 7.4对被调用函数的声明和函数原型179
- 7.5函数的嵌套调用182
- 7.6函数的递归调用184
- 7.7数组作为函数参数192
- 7.7.1数组元素作函数实参193
- 7.7.2数组名作函数参数194
- 7.7.3多维数组名作函数参数197
- 7.8局部变量和全局变量199
- 7.8.1局部变量199
- 7.8.2全局变量200
- 7.9变量的存储方式和生存期204
- 7.9.1动态存储方式与静态存储方式204
- 7.9.2局部变量的存储类别205
- 7.9.3全局变量的存储类别208
- 7.9.4存储类别小结212
- 7.10关于变量的声明和定义214
- 7.11内部函数和外部函数215
- 7.11.1内部函数215
- 7.11.2外部函数215
- 习题218
- 第8章善于利用指针220
- 8.1指针是什么220
- 8.2指针变量222
- 8.2.1使用指针变量的例子222
- 8.2.2怎样定义指针变量223
- 8.2.3怎样引用指针变量224
- 8.2.4指针变量作为函数参数226
- 8.3通过指针引用数组230
- 8.3.1数组元素的指针230
- 8.3.2在引用数组元素时指针的运算231
- 8.3.3通过指针引用数组元素233
- 8.3.4用数组名作函数参数237
- 8.3.5通过指针引用多维数组245
- 8.4通过指针引用字符串255
- 8.4.1字符串的引用方式255
- 8.4.2字符指针作函数参数259
- 8.4.3使用字符指针变量和字符数组的比较263
- 8.5指向函数的指针266
- 8.5.1什么是函数指针266
- 8.5.2用函数指针变量调用函数266
- 8.5.3怎样定义和使用指向函数的指针变量268
- 8.5.4用指向函数的指针作函数参数270
- 8.6返回指针值的函数274
- 8.7指针数组和多重指针277
- 8.7.1什么是指针数组277
- 8.7.2指向指针数据的指针280
- 8.7.3指针数组作main函数的形参282
- 8.8动态内存分配与指向它的指针变量285
- 8.8.1什么是内存的动态分配285
- 8.8.2怎样建立内存的动态分配285
- 8.8.3void指针类型287
- 8.9有关指针的小结288
- 习题291
- 第9章用户自己建立数据类型293
- 9.1定义和使用结构体变量293
- 9.1.1自己建立结构体类型293
- 9.1.2定义结构体类型变量295
- 9.1.3结构体变量的初始化和引用297
- 9.2使用结构体数组300
- 9.2.1定义结构体数组300
- 9.2.2结构体数组的应用举例301
- 9.3结构体指针303
- 9.3.1指向结构体变量的指针303
- 9.3.2指向结构体数组的指针304
- 9.3.3用结构体变量和结构体变量的指针作函数参数306
- 9.4用指针处理链表309
- 9.4.1什么是链表309
- 9.4.2建立简单的静态链表310
- 9.4.3建立动态链表311
- 9.4.4输出链表315
- 9.5共用体类型317
- 9.5.1什么是共用体类型317
- 9.5.2引用共用体变量的方式318
- 9.5.3共用体类型数据的特点319
- 9.6使用枚举类型323
- 9.7用typedef声明新类型名326
- 习题330
- 第10章对文件的输入输出331
- 10.1C文件的有关基本知识331
- 10.1.1什么是文件331
- 10.1.2文件名332
- 10.1.3文件的分类332
- 10.1.4文件缓冲区333
- 10.1.5文件类型指针333
- 10.2打开与关闭文件335
- 10.2.1用fopen函数打开数据文件335
- 10.2.2用fclose函数关闭数据文件337
- 10.3顺序读写数据文件338
- 10.3.1怎样向文件读写字符338
- 10.3.2怎样向文件读写一个字符串341
- 10.3.3用格式化的方式读写文件344
- 10.3.4用二进制方式向文件读写一组数据345
- 10.4随机读写数据文件349
- 10.4.1文件位置标记及其定位349
- 10.4.2随机读写352
- 10.5文件读写的出错检测353
- 习题354
- 第11章常见错误分析355
- 附录370附录A在VisualC++6.0环境下运行C程序的方法370
- 附录B常用字符与ASCII代码对照表377
- 附录CC语言中的关键字378
- 附录D运算符和结合性378
- 附录EC语言常用语法提要380
- 附录FC库函数384
- 参考文献390