目录
第1章C语言基本概念1
1.1计算机语言和程序2
1.1.1计算机语言2
1.1.2计算机程序2
1.1.3C语言2
1.1.4程序设计3
1.2算法和算法表示4
1.2.1算法的概念4
1.2.2算法的特征6
1.2.3算法的表示7
1.2.4算法的优化14
1.2.5结构化程序设计方法16
1.3C语言编程20
1.3.1编写一个经典的C程序20
1.3.2编译和链接22
1.4变量、表达式和赋值22
1.4.1类型23
1.4.2声明23
1.4.3赋值24
1.4.4变量的初始化24
1.4.5显示变量的值25
1.5从键盘读取输入25
1.6常量定义26
1.6.1宏常量26
1.6.2const常量27
1.7标识符28
1.8C程序的结构特点291.9C语言编程风格31
问与答32
习题133
目录
第2章数据类型与表达式36
2.1变量声明与表达式36
2.2基本数据类型37
2.3整型37
2.4浮点型40
2.5算术运算符与表达式41
2.5.1算术运算符41
2.5.2算术表达式44
2.6赋值运算符与表达式45
2.6.1赋值运算符46
2.6.2赋值表达式46
2.6.3复合赋值运算符及表达式46
2.7自增/自减运算符48
2.8字符型49
2.8.1字符操作49
2.8.2有符号字符与无符号字符49
2.8.3转义序列50
2.9字符处理函数51
2.10类型转换54
2.10.1算术运算过程中的转换54
2.10.2赋值过程中的转换56
2.10.3强制类型转换57
2.11类型定义57
2.12sizeof运算符59
问与答59
习题262
实验题65
第3章格式化输入与输出66
3.1输出函数66
3.1.1转换说明67
3.1.2转义序列71
3.2输入函数72
3.2.1转换说明72
3.2.2scanf()函数的工作原理74
3.2.3格式控制串中的普通字符75
3.2.4scanf()和printf()函数常见错误79
问与答80
习题381
实验题83
第4章选择结构84
4.1关系、等式和逻辑运算符84
4.2逻辑运算符和表达式86
4.3复合语句88
4.4空语句88
4.5if语句88
4.6ifelse语句91
4.7if语句的嵌套92
4.8级联式语句97
4.9switch语句98
4.10条件表达式101
4.11C语言中的布尔值102
4.12程序举例与测试103
4.13本章扩展内容: 位运算107
4.13.1位运算符107
4.13.2位逻辑运算108
4.13.3移位运算109
4.13.4复合位运算赋值运算符109
4.13.5位运算的应用110
问与答111
习题4112
实验题117
第5章循环结构119
5.1循环结构与循环语句119
5.2计数控制的循环126
5.3嵌套循环128
5.4条件控制的循环130
5.5流程的控制转移136
5.5.1break语句136
5.5.2continue语句138
5.5.3goto语句139
5.6应用举例141
问与答145
习题5147
实验题151
第6章函数153
6.1模块化程序设计153
6.2函数的定义154
6.2.1函数的分类154
6.2.2函数的定义155
6.2.3函数调用156
6.3函数原型声明159
6.4实参162
6.5函数封装与防御性编程164
6.6函数设计的基本原则170
6.7函数的嵌套调用171
6.8函数的递归调用和递归函数172
6.9变量的作用域和存储类型175
6.9.1变量的作用域175
6.9.2变量的存储类型177
6.10模块化程序设计实例182
问与答187
习题6189
实验题194
第7章数组195
7.1一维数组195
7.2二维数组199
7.3一维数组作为函数参数201
7.3.1数组作为实参201
7.3.2变长数组作为形参202
7.4排序与查找207
7.5二维数组作为函数参数217
7.6C程序开发方法220
问与答223
习题7225
实验题229
第8章指针230
8.1指针和指针变量230
8.2指针变量的定义和初始化231
8.3间接寻址运算符234
8.4指针变量作为函数参数237
8.5指针变量作为函数参数应用举例240
8.6函数指针及其应用247
问与答250
习题8252
实验题255
第9章字符串256
9.1字符串常量256
9.2字符串的存储256
9.3字符指针258
9.4字符串的读/写259
9.4.1按%c格式控制符读/写259
9.4.2按%s格式控制符读/写260
9.4.3使用字符串处理函数进行读/写260
9.4.4逐个字符读取字符串261
9.5字符串处理函数263
9.6字符串作为函数参数266
9.7从函数返回字符串指针267
问与答269
习题9270
实验题273
第10章指针与数组275
10.1指针的运算275
10.2指针和一维数组的关系276
10.3指针和二维数组的关系281
10.4指针数组及其应用286
10.5动态数组291
10.5.1C程序的内存映像291
10.5.2动态内存分配函数292
10.5.3一维动态数组的内存分配294
10.5.4二维动态数组的内存分配295
问与答297
习题10298
实验题300第11章自定义数据类型302
11.1用户自定义数据类型和信息隐藏302
11.2结构体的定义303
11.3结构体变量的初始化305
11.4结构体的嵌套306
11.5结构体变量的引用306
11.6结构体变量在内存中的存储形式308
11.7结构体数组的定义和初始化310
11.8结构体指针的定义和初始化313
11.9结构体作为函数参数315
11.10共用体320
11.11枚举类型323
11.12单向链表327
11.12.1问题的提出327
11.12.2链表327
11.12.3单向链表的创建328
11.12.4单向链表的搜索331
11.12.5从单向链表中删除节点332
问与答336
习题11337
实验题340
第12章文件342
12.1文件分类342
12.2文件的打开与关闭343
12.3顺序读/写文件345
12.3.1读/写字符346
12.3.2读/写字符串349
12.3.3格式化读/写文件351
12.3.4读/写数据块355
12.4随机读/写文件359
12.5标准输入/输出重定向361
问与答362
习题12364
实验题366
第13章构建大规模程序368
13.1头文件368
13.1.1#include指令的使用368
13.1.2定义共享类型和宏369
13.1.3共享函数原型370
13.1.4共享变量声明370
13.1.5嵌套包含371
13.1.6保护头文件371
13.1.7头文件中的#error指令372
13.2源文件372
13.3多文件程序的设计373
13.4构建多文件程序377
13.4.1makefile文件378
13.4.2链接错误379
13.4.3重构程序379
13.4.4在程序外定义宏381
问与答382
习题13383
实验题383
附录384
附录ADevC++和Visual C++下基本数据类型的取值范围384
附录B关键字384
附录C运算符的优先级与结合性384
附录DASCII字符表384
附录EANSI C标准库函数384
附录FDevC++集成开发环境385
参考文献386