第一部分 语言基础知识 3
第1章 C语言概述 3
1.1 C语言的发展和特点 3
1.1.1 C语言的发展 3
1.1.2 C语言的特点 4
1.1.3 C语言的应用领域 4
1.2 C语言程序的结构与书写规则 5
1.2.1 C语言程序的基本结构 5
1.2.2 C语言函数的一般结构 7
1.2.3 C语言函数的语法规则 7
1.3 C语言的编译环境 9
1.4本章小结 17
习题与实训 18
第2章 数据类型、运算符与表达式 21
2.1 C语言的数据类型 21
2.2标识符、常量和变量 22
2.2.1标识符 22
2.2.2常量 23
2.2.3变量 23
2.3整型数据 24
2.3.1整型常量 24
2.3.2整型变量 25
2.4实型数据 26
2.4.1实型常量 26
2.4.2实型变量 26
2.5字符型数据 27
2.5.1字符常量 27
2.5.2字符变量 28
2.5.3字符串常量 29
2.6算术运算与算术表达式 30
2.6.1算术运算 30
2.6.2算术表达式 31
2.7赋值运算与赋值表达式 32
2.8自增、自减与逗号运算 33
2.8.1自增(++++)自减(--)运算 33
2.8.2逗号运算及其表达式 34
2.9本章小结 34
习题与实训 36
第二部分 语言设计知识 41
第3章 顺序结构程序设计 41
3.1程序设计概述 41
3.1.1算法的概念 41
3.1.2算法的特征 42
3.1.3算法的描述 42
3.1.4结构化程序设计方法 44
3.2 C语言语句 45
3.3格式化输出函数printf() 46
3.3.1 printf()函数的一般格式 46
3.3.2格式字符 47
3.3.3使用说明 49
3.4格式化输入函数scanf() 49
3.4.1 scanf()函数的一般格式 50
3.4.2格式字符 50
3.4.3使用说明 51
3.5单个字符的输入/输出函数 52
3.5.1 putchar()函数 52
3.5.2 getchar()函数 52
3.6顺序结构程序设计项目案例 54
3.7本章小结 56
习题与实训 56
第4章 选择结构程序设计 61
4.1关系运算符及关系表达式 61
4.1.1关系运算符及其优先级 61
4.1.2关系表达式 62
4.2逻辑运算符和逻辑表达式 63
4.2.1逻辑运算符及其优先级 63
4.2.2逻辑表达式 64
4.3 if语句和条件运算符 65
4.3.1 if语句 65
4.3.2条件运算符 68
4.4 switch语句 69
4.5选择结构程序设计项目案例 71
4.6本章小结 72
习题与实训 73
第5章 循环结构程序设计 77
5.1循环语句概述 77
5.1.1引例 77
5.1.2循环结构和循环语句 78
5.2for语句和while语句 79
5.2.1 for语句 79
5.2.2 while语句 81
5.3直到型循环do-while语句 83
5.3.1引例 83
5.3.2 do-while语句 84
5.4循环结构的嵌套 85
5.5 break语句与continue语句 86
5.5.1 break语句 86
5.5.2 continue语句 87
5.6循环结构程序设计项目案例 89
5.7本章小结 91
习题与实训 92
第6章 函数 98
6.1函数的定义与调用 98
6.1.1函数的定义 99
6.1.2函数的返回值与函数类型 101
6.1.3对被调用函数的声明和函数原型 103
6.1.4函数的调用 105
6.1.5函数的形参与实参 107
6.2函数的嵌套调用和递归调用 108
6.2.1函数的嵌套调用 108
6.2.2函数的递归调用 111
6.3内部变量与外部变量 113
6.3.1内部变量 113
6.3.2外部变量 114
6.4内部函数和外部函数 116
6.4.1内部函数 117
6.4.2外部函数 119
6.4.3多个源程序文件的编译和连接 119
6.5变量的动态存储与静态存储简介 120
6.5.1动态存储与静态存储的概念 120
6.5.2内部变量的存储方式 120
6.5.3外部变量的存储方式 123
6.6本章小结 124
习题与实训 126
第7章 数组 132
7.1一维数组 132
7.1.1一维数组的定义 132
7.1.2一维数组元素的引用 133
7.1.3一维数组的初始化 134
7.1.4一维数组应用举例 135
7.2二维数组 137
7.2.1二维数组的定义 137
7.2.2二维数组元素的引用 138
7.2.3二维数组的初始化 138
7.2.4二维数组应用举例 139
7.3字符数组与字符串 140
7.3.1字符数组的定义和基本操作 140
7.3.2字符数组的整体操作 141
7.3.3常用字符串处理函数 144
7.4数组作为函数参数 145
7.4.1数组元素作为函数参数 145
7.4.2数组名作为函数参数 146
7.5本章小结 149
习题与实训 150
第8章 编译预处理 155
8.1宏定义 155
8.1.1无参宏定义 155
8.1.2有参宏定义 158
8.2文件包含 160
8.3本章小结 161
习题与实训 161
第9章 指针 163
9.1指针和指针变量的概念 163
9.2指针变量的定义与应用 164
9.2.1指针变量的定义与相关运算 164
9.2.2指针变量作函数参数 168
9.3数组的指针和指向数组的指针变量 170
9.3.1概述 170
9.3.2通过指针引用数组元素 170
9.3.3数组名作函数参数 174
9.3.4二维数组的指针及其指针变量 176
9.4字符串的指针和指向字符串的指针变量 179
9.4.1字符串的表示和引用 179
9.4.2字符串指针作函数参数 181
9.5返回指针值的函数 183
9.6指针数组与主函数main()的形参 184
9.6.1指针数组 184
9.6.2主函数main()的形参 185
9.6.3指向指针的指针 186
9.7函数的指针和指向函数的指针变量 187
9.8本章小结 188
习题与实训 189
第10章 结构型、共用型和枚举类型 193
10.1结构类型与结构型变量的定义 193
10.1.1结构类型定义 193
10.1.2结构型变量的定义 195
10.2结构型变量的引用与初始化 196
10.2.1结构型变量的引用与赋值 196
10.2.2结构型变量的初始化 197
10.3结构数组 197
10.4指向结构类型数据的指针 199
10.4.1指向结构型变量的指针 199
10.4.2指向结构型数组的指针 201
10.4.3指向结构数据的指针作函数参数 202
10.5链表处理——结构指针的应用 203
10.5.1链表的创建 203
10.5.2对链表的插入操作 205
10.6共用型和枚举型 206
10.6.1共用型 206
10.6.2枚举型 208
10.7用户自定义类型 209
10.8本章小结 210
习题与实训 211
第11章 位运算 213
11.1数值在计算机中的表示 213
11.2位运算 214
11.2.1位运算符 214
11.2.2位运算符使用方法 215
11.2.3应用举例 218
11.3本章小结 219
习题与实训 219
第12章 文件 222
12.1文件概述 222
12.2文件的打开与关闭 223
12.2.1文件的打开——fopen()函数 224
12.2.2文件的关闭——fclose()函数 225
12.3文件的读写操作 225
12.3.1读/写文件中的一个字符——fgetc()和fputc()函数 226
12.3.2读/写一个字符串——fgets()函数和fputs()函数 229
12.3.3读/写一个数据块——fread()和fwrite()函数 231
12.3.4对文件进行格式化读/写——fscanf()和fprintf()函数 231
12.3.5读/写函数的选用原则 232
12.4位置指针与文件定位 232
12.5本章小结 233
习题与实训 234
第三部分 项目案例库 239
第13章 C语言程序项目案例 239
13.1火车订票系统 239
13.1.1系统功能总体描述 239
13.1.2详细设计 239
13.1.3调试分析 240
13.2掷骰子游戏 253
13.3 24点扑克牌游戏 255
13.4强大的通讯录 264
13.5竞技比赛打分系统 270
附录 279
附录A 标准ASCII字符编码表 279
附录B 运算符的优先级和结合方向 280
附录C 标准库函数 281