第一章 从一简单的程序说起 1
简介 1
1-1 一个简单的C程序 2
第二章 C的基本结构及输出输入函数 4
简介 4
2-1 C语言程序的基本结构:主函数main() 4
2-2 结构化的C语言 7
2-2-1 奇形怪状的C语言程序结构 7
2-3 程序的文字注释 8
2-4 简介输出函数printf()与换行字符\n 9
2-4-1 输出函数printf()被定义在〈stdio.h〉函数库内 9
2-4-2 换行字符\n 10
2-5 常数(constant) 11
2-5-1 整型常数(integer constant) 11
2-5-2 字符常数(character constant) 12
2-5-3 字符串常数(character string constant) 16
2-5-4 实型常数(float constant) 18
2-6 变量(variable) 18
2-6-1 变量名称及函数名称的取名规则 19
2-6-2 变量的说明(variable declaration)问题 20
2-6-3 C语言的数据类型(data type) 22
2-7 地址运算符(address operator)与sizeof运算符 23
2-8 如何赋值(data)给变量 26
2-9 输出函数printf() 28
2-9-1 8.94449e-318、7.724626E-91以及%之用法 29
2-9-2 %P与%n之用法 30
2-9-3 printf()函数的数据转换表 31
2-9-4 格式化的符号(format modifier) 32
2-9-5 反斜线字符‘\’(backslash character)又叫换码符(escape sequence)的意义 35
2-10 原型的printf()函数(The Prototype for printf()) 39
2-11 输入函数scanf() 41
2-12 scanf()函数的转换表 49
2-13 原型的scanf()函数 49
2-14 字符输入函数getchar()与字符输出函数putchar() 50
2-15 字符输入函数getche() 52
绪论 52
第三章 算术运算(Arithmetic operation) 56
简介 56
3-1 算术运算符(arithmetic operator) 56
3-2 算术赋值运算符(arithmetic assignment operat0r) 59
3-3 增1减1运算符(icrement and decrement operator)++与-- 64
3-4 运算符优先次序(operator precedence) 70
3-5 数据类型(data type)的转换(type conversion) 75
3-5-1 强制类型转换(casting) 75
3-5-2 数据类型转换规则 76
结论 78
第四章 if与switch的条件结构 81
简介 81
4-1 关系运算符(relational operator) 81
4-2 条件指令if 82
4-2-1 if指令的通则 87
4-3 关系表达式(relational expression)所返回的值 88
4-4 流程图(flow chart) 90
4-5 if-else 保留字 91
4-5-1 if-else的通则 92
4-6 if-else if 93
4-6-1 条件指令if-else if的通则 95
4-7 嵌套条件指令if(nested if) 96
4-8 goto指令 104
4-9 逻辑运算符(logical operator) 105
4-10 数字函数表(Mathematical Functions) 109
4-11 重要的数字函数与级数(series)的关系 115
4-12 switch指令与转移指令break 118
4-13 条件运算符(Conditional Operator) 123
4-14 二进位数运算符(The Bitwise Operators) 124
4-14-1 AND(&)数值运算符 125
4-14-2 OR(||)数值运算符 127
4-14-3 数值右移运算符>>(The Bitwie Rigth-Shift>>Operator) 128
4-14-4 数值左移运算符<<(The Bitwise Left-Shift<<Operator) 129
4-14-5 数值运算符XOR(^)(The Bitwise XOR(^)operator) 130
4-14-6 数值补数运算符(~)(The Bitwise Complement Operator) 131
结论 134
第五章 循环(loop) 137
简介 137
5-1 循环指令for(loop statement for) 137
5-1-1 for循环指令正规的通则 139
5-2 for的弹性用法 144
5-3 嵌套for循环(Nested for loop) 151
5-4 循环指令while(loop statement while) 156
5-5 应用篇 162
5-5-1 有关#define 163
5-6 d0…while循环(loop statement d0…while) 174
5-7 转移指令(Jump Statement)break、goto、continue、return) 178
结论 184
第六章 数组与字符串(Array and String) 189
简介 189
6-1 一维数组(One Dimensional Array) 189
6-2 一维数组的说明语句 190
6-3 一维数组的数值初始化(Initialize one Dimensional Array) 192
6-4 一维数组的应用问题 197
6-5 二维数组(Two Dimensional Array) 210
6-6 二维数组的说明语句 210
6-7 二维数组的初始化与输出 212
6-8 二维数组的应用 216
6-9 三维数组(Three Dimensional Array) 220
6-10 字符串(Character String) 225
6-11 字符串常数(String Constant) 226
6-12 字符串变量(string variable) 227
6-13 字符串的输入输出函数gets()与puts() 232
6-14 字符串的应用问题 234
6-15 字符串函数与字符串数组(String Function and Array of String) 239
结论 247
第七章 函数(Function) 249
简介 249
7-1 如何编写原型函数(Function Prototype) 249
7-2 返回整型函数 251
7-3 返回实型函数 257
7-4 返回空函数 260
7-5 数组与函数 263
7-6 函数与数组的应用问题 268
7-7 递归函数(Recursive Function) 281
7-8 外部变量(External Variable) 285
7-9 预处理程序(Preprocessor)#define与#indude 288
7-9-1 预处理程序#define 288
7-9-2 有关#define的功能问题 292
7-9-3 预处理程序#include 293
7-10 数据贮存类别的保留字extern 296
7-11 预处理程序#ifdef…#endif、#else与#undef 297
结论 299
第八章 指针(Pointer) 302
简介 302
8-1 指针与地址(Pointer and Address) 302
8-2 指针的定义(Pointer) 304
8-3 为什么需要使用指针? 309
8-4 指针与函数(Pointer and Function) 309
8-5 指针与数组(Pointer and Array) 318
8-6 指针与字符串(Pointer and String) 327
8-7 字符串与指针的应用题 334
8-8 返回指针的函数(Pointer function) 343
8-9 指针数组(Arrays of pointers) 348
8-10 指针数组与字符串数组(Array of Pointer and Array of String) 353
8-11 双重指针(Pointer to Pointer) 362
8-12 函数指针(Pointer to function) 371
8-12-1 函数指针数组(Array of pointer of Function) 374
8-12-2 函数充当另一个函数的参数(A function as an argument) 375
结论 377
第九章 结构(Structure) 381
简介 381
9-1 结构的说明语句 382
9-2 结构的初始化(Initialize a structure) 385
9-3 结构数组的说明语句 391
9-4 结构数组的初始化(Initialize Structure) 392
9-5 嵌套结构(Nested Structure) 394
9-6 (指向)结构的指针(Strucure Pointer) 402
9-7 如何把结构传给函数? 410
9-7-1 把结构的元素传给函数 410
9-7-2 整组结构传给函数 411
9-7-3 把结构指针传给函数 414
9-8 内存容量及地址的分配函数:malloc()与calloc() 418
9-9 线性链表(line linked list) 428
9-9-1 自参性结构(self-referential structure) 428
9-9-2 单链表的建立与输出 432
9-10 联合(unions) 438
9-11 数据类型(data type):enum(eration) 443
9-12 重新定义数据类型(data type)的typedef 445
结论 447
第十章 文件与主函数的参数 451
简介 451
10-1 打开文件(opening a file)与关闭文件(closing the file) 452
10-2 读文件与写文件 456
10-3 字符串函数fgets()与fputs() 457
10-4 fprintf()与fscanf()函数 459
10-5 文件的更新(file update) 463
10-6 主函数的参数:从DOS或UNIX系统的命令行读入字符串 467
10-6-1 主函数main()的参数(arguments) 467
10-6-2 主函数main(int argc、char argv[])的应用(一) 470
10-6-3 主函数main(int argc、char argv[])的应用(二) 477
结论 490
第十一章 变量的贮存类别与大程序 493
简介 493
11-1 变量的贮存类别(Storage Class) 493
11-2 变量的生命期(lifetime):自动变量(Automatic)与静态变量(Static) 494
11-3 变量的生命期(lifetime):内部变量(Local)与外部变量(external or global) 496
11-4 register贮存类别 497
11-5 变量的可见范围(visibility) 498
11-6 extern贮存类别(storage class)与大程序(larger program) 500
结论 512
附录A 习题解答 515