1 引言 1
1.1程序及编程语言 1
1.2 C语言简介 2
1.2.1 C语言的发展 2
1.2.2 C语言的特点 3
1.3 C语言源程序的结构 4
1.4程序设计准备 5
1.4.1在Turbo C 2.0集成开发环境中编辑、调试程序的过程 5
1.4.2在Visual C+++6.0集成开发环境中编辑、调试程序的过程 8
1.5如何学习本课程 12
习题一 12
2 简单的C语言程序设计 15
2.1程序设计与算法 15
2.1.1程序 15
2.1.2算法的概念和特点 15
2.1.3结构化程序设计 16
2.2 C语言程序的基本组成结构 18
2.2.1简单的C语言程序举例 18
2.2.2 C语言程序的组成结构 21
2.3 C语言程序设计的主要过程 24
2.3.1问题分析与算法描述 24
2.3.2程序的编辑 25
2.3.3程序的编译与运行 25
习题二 26
3 数据类型、运算符和表达式 28
3.1 C语言的数据类型 28
3.1.1数据类型的分类 28
3.1.2标识符 28
3.1.3关键字 29
3.2常量与变量 29
3.2.1常量 29
3.2.2变量 30
3.3整型数据 31
3.3.1整型常量 31
3.3.2整型变量 32
3.4实型数据 35
3.4.1实型常量 35
3.4.2实型变量 36
3.5字符型数据 37
3.5.1字符常量 38
3.5.2字符变量 39
3.5.3字符串常量 40
3.6各种类型数据之间的混合运算 41
3.7 C语言的运算符与表达式 43
3.7.1 C语言的运算符简介 43
3.7.2算术运算符和算术表达式 44
3.7.3赋值运算符和赋值表达式 47
3.7.4逗号运算符和逗号表达式 51
习题三 52
4 基本输入输出 56
4.1 C语言的语句 56
4.2数据输入输出的概念以及在C语言中的实现 57
4.3字符数据的输入输出 57
4.3.1 putchar函数(字符输出函数) 57
4.3.2 getchar函数(键盘输入函数) 58
4.4格式输入与输出 58
4.4.1 printf函数(格式输出函数) 58
4.4.2 scanf函数(格式输入函数) 62
习题四 63
5 选择结构程序设计 65
5.1关系运算符和关系表达式 65
5.2逻辑运算符和逻辑表达式 66
5.3 if语句 68
5.3.1最基本的if语句 68
5.3.2 if—else结构 70
5.3.3条件运算符和条件表达式 71
5.3.4 if—else if结构 72
5.3.5 if语句的嵌套 74
5.4 switch语句 75
习题五 78
6 循环结构程序设计 79
6.1简介 79
6.2 while语句 79
6.3 do—while语句 80
6.4 for语句 82
6.5 goto语句 85
6.6循环的嵌套 85
6.7循环语句的比较 86
6.8循环控制语句 86
6.8.1 break语句 86
6.8.2 continue语句 87
6.9程序应用 87
习题六 90
7 数组 92
7.1一维数组 92
7.1.1一维数组的定义 92
7.1.2一维数组的初始化 93
7.1.3一维数组举例 94
7.2二维数组 97
7.2.1二维数组的定义 97
7.2.2二维数组的初始化 97
7.2.3二维数组举例 98
7.3字符数组和字符串 100
7.3.1字符数组的定义 100
7.3.2字符数组的初始化 100
7.3.3字符串常用函数 102
7.3.4常用字符函数 106
7.3.5字符数组举例 107
习题七 108
8 函数 109
8.1函数概述 109
8.1.1函数的分类 109
8.1.2函数的定义 110
8.2函数的参数和返回值 111
8.2.1函数的参数 111
8.2.2函数返回值 112
8.3函数参数的传递方式 113
8.3.1值传递 113
8.3.2地址传递 114
8.4函数调用 115
8.4.1函数调用的一般形式 115
8.4.2函数调用的方式 116
8.4.3函数的嵌套调用 116
8.5变量的作用域与变量的存储类别 120
8.5.1变量的作用域 120
8.5.2变量的存储类别 122
8.6函数的作用范围 124
8.6.1内部函数 124
8.6.2外部函数 125
习题八 125
9 预处理命令 126
9.1概述 126
9.2宏定义 126
9.2.1无参宏定义 126
9.2.2带参宏定义 127
9.3文件包含 130
9.4小结 132
习题九 132
10 指针 134
10.1地址和指针 134
10.1.1地址、指针和指针变量的概念 134
10.1.2直接访问和间接访问 135
10.2变量的指针与指针变量 136
10.2.1定义一个指针变量 136
10.2.2指针变量的初始化和赋值 137
10.2.3指针变量的引用 138
10.2.4指针的运算 139
10.3数组与指针 141
10.3.1数组名是指针常量 141
10.3.2指向数组元素的指针变量 141
10.3.3通过指针引用数组元素 142
10.3.4多维数组与指针 144
10.4字符串与指针 147
10.4.1字符串处理方法 147
10.4.2使用字符指针变量和使用字符数组处理字符串的比较 148
10.5函数与指针 150
10.5.1指针变量作为函数的参数 150
10.5.2数组名与指向数组的指针变量作为函数参数 153
10.5.3字符指针作为函数参数 157
10.5.4函数指针的基本概念 158
10.5.5用指向函数的指针作为函数参数 159
10.5.6返回指针值的函数 160
10.6指针数组和多级指针 162
10.6.1指针数组的概念 162
10.6.2多级指针 165
10.6.3指针数组作main函数的形参 166
10.7 void指针类型与动态存储分配 167
10.7.1 void指针类型 167
10.7.2动态内存分配函数 168
10.8小结 169
习题十 170
11 结构体与共用体 172
11.1结构体类型概述 172
11.1.1结构体类型的定义 172
11.1.2结构体变量的定义 174
11.1.3结构体变量的引用 174
11.1.4结构体变量的赋值和初始化 174
11.2结构体数组 175
11.3指向结构体类型数据的指针 177
11.3.1结构体指针变量的定义 177
11.3.2利用结构体指针变量引用结构体成员 178
11.3.3用结构体变量和指向结构体的指针变量作函数参数 179
11.4用结构体处理链表 180
11.4.1链表概述 180
11.4.2链表的建立与输出 181
11.4.3链表的插入 183
11.4.4链表的删除 185
11.4.5链表的综合操作 186
11.5共用体 189
11.5.1共用体类型及变量的定义 189
11.5.2共用体变量的使用 190
11.6枚举类型 192
11.7用typedef定义类型 192
习题十一 193
12 位运算 196
12.1位运算符 196
12.2位域 202
习题十二 205
13 文件 207
13.1文件的概念 207
13.1.1文件 207
13.1.2文件指针 207
13.1.3文件结束的判定 208
13.2文件的打开与关闭 208
13.2.1文件的打开 209
13.2.2文件的使用 209
13.2.3文件的关闭 210
13.3文件的读写 210
13.3.1字符的读写 210
13.3.2字符串的读写 211
13.3.4格式化读/写文件函数(fprintf函数和fscanf函数) 214
13.4文件的定位 215
13.5文件检测函数 216
13.6小结 216
综合训练(一) 217
综合训练(二) 224
综合训练(三) 231
综合训练(四) 240
附录 247
运算符及其结合性 247
常用字符与ASCII代码对照表 248
常用函数一览表 249
参考文献 250