内容简介
本教材共12章,第1章阐述计算机的基本工作原理,并重点介绍了与C语言程序密切相关的计算机基础知识;第2章介绍了C语言的核心内容;第3章着重介绍了基本数据类型、表达式和运算符;第4章介绍了结构化程序控制流程,重点介绍了三种基本控制结构;第5章探讨了函数的作用以及函数的设计;第6章讨论了指针和数组;第7章讨论了递归函数;第8章讨论了结构、联合、位运算和枚举;第9章阐述了预处理器的使用;第10章介绍了文件的基本操作;第11章做了一些C语言高级话题的讨论;第12章对C99和C89标准的主要不同作了对比。
本教材取材新颖,内容丰富,可读性强,考虑到初学者的需求,特别增加了计算机基础知识一章。本教材围绕编程能力展开,线索清楚,尤其避免了学习者在学习初期陷入语法细节的烦恼。同时,考虑到读者学习时的心理适应性,对一些枯燥的内容作了适当的处理。
本教材面向初学者,立足C99标准,全面系统地介绍了C语言各要素及C语言程序设计技术,重点介绍与C89兼容的内容。对C89和C99的主要不同用专门章节进行了论述。
本教材引入了C语言核心内容的概念,并按照以核心内容为主的思想组织教材。本教材意图从总体结构入手,慢慢深入细节。本教材的另一特点是引入了程序缺陷的内容,它并不见得搜集得很全,但是这部分内容不管对初学者还是对那些长期编程的人都很有用。
本教材可作为高等学校计算机类、非计算机类本科教材,亦可供有需要的人员自学使用。
图书目录
第1章基础知识1
1.1计算机系统2
1.1.1计算机的硬件系统3
1.1.2计算机的软件系统6
1.2计算机的基本工作原理7
1.2.1存储程序的原理7
1.2.2内存地址的概念8
1.2.3C程序的内存分区9
1.3计算机语言12
1.3.1机器语言12
1.3.2汇编语言12
1.3.3高级语言13
1.4数据在计算机内的表示13
1.4.1计数制13
1.4.2不同进位计数制之间的转换15
1.4.3数值信息在计算机中的表示18
1.4.4二进制算术运算和逻辑运算22
1.4.5ASCII码25
1.5算法和数据结构27
1.5.1算法及其特点27
1.5.2数据结构28
1.5.3传统流程图表示算法28
1.6C语言标准简介29
1.7C和C++的不同30
1.8C语言编程风格简介30
习题31
第2章C语言的基本要素33
2.1C语言程序的开发过程34
2.2第一个C语言程序34
2.2.1C语言程序的注释37
2.2.2main( )函数及其返回值38
2.2.3函数参数和返回值38
2.2.4函数体39
2.2.5C程序的运行过程40
2.3变量定义、算术表达式、赋值语句和while语句42
C语言程序设计(C99版)目录2.3.1变量定义语句44
2.3.2赋值语句46
2.3.3算术表达式46
2.3.4while循环语句46
2.3.5显示输出函数printf( )47
2.4for循环语句48
2.5常量50
2.5.1用#define定义宏50
*2.5.2用const定义常量52
2.6字符的输入和输出操作52
2.6.1字符输入输出函数52
2.6.2文件复制55
2.6.3字符计数58
2.6.4行计数61
2.6.5单词计数63
2.7函数65
2.8函数参数——复制传值68
2.9字符数组和字符指针71
2.9.1字符数组71
2.9.2字符指针75
2.10整型数组76
2.11外部变量及变量的作用域81
***2.12实例研究:寻找质数84
*2.13程序陷阱87
习题88
第3章变量名、数据类型、运算符和表达式91
3.1C语言的变量命名91
3.1.1字符集91
3.1.2关键字92
3.1.3变量命名92
3.2C语言的基本数据类型及其大小93
3.3常量及其类型94
3.3.1字符常量95
3.3.2整型常量97
3.3.3实型常量97
3.3.4字符串常量98
*3.3.5枚举常量100
*3.3.6使用const限定的常量101
3.4变量类型及其定义102
3.4.1基本数据类型变量及其定义102
3.4.2变量的初始化105
3.5运算符和表达式105
3.5.1表达式和表达式的值106
3.5.2赋值运算符、赋值表达式和赋值语句106
3.5.3算术运算符及其表达式107
3.5.4自增和自减算术运算符及其表达式109
3.5.5关系运算符及其表达式114
3.5.6逻辑运算符及其表达式114
3.5.7逗号运算符及其表达式115
3.5.8条件运算符及其表达式116
3.5.9位运算符及其表达式117
3.5.10复合赋值运算符及其表达式120
3.6运算符的优先级和求值顺序123
3.7类型转换125
***3.8实例研究:求质数的快速筛法131
*3.9程序陷阱134
习题138
第4章C程序基本控制结构141
4.1程序的基本结构141
4.1.1语句和块的概念141
4.1.2三种基本结构142
4.2顺序结构程序设计142
4.2.1数据输入输出在C语言中的实现方法142
4.2.2顺序结构程序实例143
4.3选择结构程序设计143
4.3.1if…else…语句144
4.3.2else if语句145
4.3.3switch语句147
4.4循环结构程序设计150
4.4.1while 循环语句150
4.4.2for 循环语句150
4.4.3do…while循环语句154
4.4.4break、continue和goto语句156
***4.5实例研究:寻找名人158
*4.6程序陷阱161
习题162
第5章函数165
5.1C语言的程序模块165
5.2函数概念166
5.2.1函数基础166
5.2.2函数的现代定义形式171
*5.2.3函数的传统定义形式172
5.2.4函数返回语句return172
5.2.5函数返回非整数174
5.2.6函数原型177
**5.2.7内联函数(inline关键字)177
5.3外部变量、内部变量及其作用域178
*5.3.1外部变量和内部变量178
5.3.2变量的作用域规则191
*5.3.3头文件的设计193
5.4变量的存储类型196
5.4.1自动型变量196
5.4.2静态型变量196
5.4.3寄存器型变量198
5.4.4外部型变量198
5.4.5块结构199
5.4.6变量的存储类型及其作用域总结199
5.5变量的初始化201
*5.6变量的连接202
*5.7自顶向下程序设计202
***5.8实例研究203
5.8.1洗牌和发牌模拟203
5.8.2寻求一一函数205
*5.9程序陷阱208
习题210
第6章数组和指针211
6.1指针和地址212
6.2指针和函数参数214
6.3指针和数组219
6.4地址运算223
6.5字符指针和函数227
6.6指针数组和指向指针的指针230
6.6.1指针数组230
*6.6.2指向指针的指针234
6.6.3指针数组的初始化236
6.7多维数组237
6.7.1二维数组的定义、初始化及引用237
*6.7.2二维数组作为形式参数240
**6.7.3指针数组与多维数组的比较242
***6.8实例研究243
6.8.1兑换钱问题243
6.8.2最长公共子序列245
*6.9程序陷阱248
习题253
第7章递归255
7.1递归问题求解255
**7.2回溯法259
7.3分而治之算法263
***7.4实例研究264
7.4.1汉诺塔问题264
7.4.2迷宫问题266
*7.5程序陷阱269
习题270
第8章结构、联合、位运算和枚举类型273
8.1结构273
8.1.1概述273
8.1.2结构的声明273
8.1.3结构类型变量的引用276
8.1.4结构变量的初始化278
8.1.5结构数组279
8.1.6指向结构类型的指针285
8.2联合289
8.2.1联合的概念289
8.2.2联合的定义290
8.2.3联合变量的说明290
8.2.4联合变量的赋值和使用291
8.3枚举类型293
8.4类型定义:typedef298
8.5位运算符299
8.5.1位运算符介绍300
*8.5.2位运算综合举例305
**8.6位段308
8.6.1位段的定义和位段变量的说明308
8.6.2位段的使用310
***8.7实例研究313
8.7.1石头、剪刀、布游戏313
8.7.2最短路径问题319
*8.8程序陷阱323
习题324
第9章预处理命令325
9.1概述325
9.2文件包含325
9.3宏定义326
9.3.1无参宏定义326
9.3.2带参宏定义329
*9.3.3取消宏#undef335
9.4条件编译335
9.4.1第1种形式:#ifdef、#else和#endif335
9.4.2第2种形式:#if、#else和#endif337
9.4.3第3种形式:#ifndef、#else和#endif338
*9.5宏assert339
***9.6实例研究340
9.6.1碰运气游戏340
9.6.2编辑字符串346
*9.7程序陷阱351
习题352
第10章文件353
10.1文件概念353
10.2文件指针354
10.3文件的打开与关闭354
10.3.1文件打开的函数fopen( )354
10.3.2文件关闭的函数fclose( )356
10.4文件检测函数356
10.5文件操作函数357
10.5.1字符读写函数:fgetc( )/fputc( )357
10.5.2字符串读写函数:fgets( )/fputs( )360
10.5.3数据块读写函数:fread( )/fwrite( )363
10.5.4格式化读写函数:fscanf( )/fprintf( )367
10.6随机读写文件370
***10.7实例研究374
10.7.1文件加密算法374
10.7.2文件分割算法379
*10.8程序陷阱386
习题386
第11章高级话题387
**11.1变长参数列表387
**11.2命令行参数389
**11.3编译多个源文件程序的说明390
**11.4用exit( )退出程序的执行391
**11.5运态内存分配与释放393
11.5.1运态内存分配函数: malloc( )393
11.5.2运态内存释放函数:free( )393
11.5.3运态内存处理实例:线性链表393
**11.6指针的深入讨论397
11.6.1数组名和指针变量作函数参数397
11.6.2指向函数的指针变量398
11.6.3返回指针的函数400
*11.7格式化输出与输入讨论401
11.7.1格式化输出函数printf( )401
11.7.2格式化输入函数scanf ( )404
**11.8实例研究:生物基因序列407
*11.9程序陷阱417
习题418
**第12章C89与C99419
12.1C99增加的属性419
12.1.1inline内联函数420
12.1.2restrict限定的指针420
12.1.3新的内建数据类型421
12.2C99改变了的属性422
12.3C99删除了的属性426
附录AC程序的基本开发过程429
A.1安装程序429
A.2建立一个工程429
附录BASCII表433
附录C运算符表435
附录D常见标准库函数437
附录E输入输出格式控制符451
附录FC程序设计编程风格指导453
附录G四川大学计算机学院国家示范性软件学院C语言考研试题举例455
附录H词汇表459
参考文献465