1引言 1
1.1欢迎 1
1.2程序设计概述 3
1.2.1指令与程序 3
1.2.2程序设计语言 4
1.2.3程序开发的步骤 6
1.3算法 7
1.3.1算法的概念 7
1.3.2算法的复杂性 8
1.3.3算法的表示方法 8
1.4结构化程序设计 10
1.5 C语言的编译与集成环境 11
1.5.1 C语言程序开发步骤 11
1.5.2集成环境 12
2数据类型 13
2.1信息存储 13
2.1.1信息编码 13
2.1.2定点数与浮点数 14
2.1.3信息存储 14
2.2标识符 15
2.3基本数据类型 17
2.4常量 18
2.4.1整型常量(整常数) 18
2.4.2实型常量 18
2.4.3字符型常量 19
2.4.4字符串常量 20
2.4.5符号常量 21
2.5变量 22
2.5.1变量的定义 22
2.5.2数据的存储 23
2.6数据的输入与输出 25
2.6.1输出字符putchar() 25
2.6.2输入字符getchar() 26
2.6.3格式化输出函数printf 26
2.6.4格式化输入函数scanf 30
3运算符与表达式 33
3.1数据类型转换 33
3.2运算符 34
3.3表达式 34
3.4算术表达式 35
3.4.1算术运算符 35
3.4.2自增运算符和自减运算符 35
3.4.3算术运算符的优先级与结合性 36
3.4.4算术表达式 37
3.5位运算 37
3.6赋值运算符 38
3.6.1赋值运算符 38
3.6.2赋值表达式 38
3.6.3复合的赋值运算符 40
3.7逗号运算符与逗号表达式 41
3.8深入讨论表达式 42
4分支结构 45
4.1逻辑运算符和逻辑表达式 45
4.1.1逻辑真与逻辑假 46
4.1.2逻辑运算符 46
4.1.3逻辑表达式 48
4.2关系运算符和关系表达式 50
4.3分支语句 52
4.3.1 if分支结构 52
4.3.2空语句 55
4.3.3复合语句 55
4.4条件运算符 59
4.5多分支if-else-if 60
4.6嵌套的if语句 63
4.7 switch和break语句 69
5循环 77
5.1 while语句 78
5.2 do-while语句 81
5.3 for循环语句 83
5.4三种循环语句的比较 86
5.5循环嵌套 87
5.6 break和continue语句 88
5.7 goto语句 92
5.8程序实例和分析 93
6函数的使用 97
6.1编写一个简单的函数 97
6.2调用库函数 99
6.2.1 C语言的标准库函数 100
6.2.2库函数的头文件 100
6.2.3函数类型、函数名与形参 100
6.2.4调用库函数 101
6.3定义用户自定义函数 101
6.4调用自定义函数 102
6.5函数声明 104
6.5.1函数声明 104
6.5.2在函数外部进行函数声明 105
6.5.3省略函数说明 106
6.6函数的参数传递 107
6.6.1参数传递 107
6.6.2实参和形参数据类型不同 109
6.7函数的返回值 110
6.7.1函数返回 110
6.7.2返回值 111
6.7.3 void类型的函数 112
6.7.4函数返回值的数据类型 112
6.8 C语言程序的执行过程 113
6.9函数的嵌套调用 114
6.10局部变量和全局变量 115
6.10.1局部变量 115
6.10.2全局变量 115
6.10.3内部变量和外部变量 116
6.11变量的存储类别 117
6.11.1存储期属性 117
6.11.2存储类别属性 118
7图形化界面 124
7.1 Turbo C绘图基础 126
7.2设置图形工作环境 127
7.3图形绘制函数 128
7.4图形模式的文本显示 129
7.5俄罗斯方块初步 129
7.6综合应用 130
8指针 132
8.1变量的指针与指针变量 132
8.1.1变量的指针与取地址运算符 132
8.1.2指针变量 133
8.2用指针访问数据 135
8.3指针变量的运算 139
8.3.1指针的赋值运算 139
8.3.2指针的关系运算 141
8.3.3指针的算术运算 141
8.4指针作为函数的参数 143
9数组 150
9.1一维数组的定义和引用 150
9.1.1一维数组的定义和引用 150
9.1.2一维数组的存储 152
9.1.3一维数组的初始化 153
9.1.4一维数组程序举例 153
9.2指针与一维数组 154
9.2.1用数组名指针法访问数组元素 154
9.2.2用指针访问数组元素 155
9.2.3数组元素的指针访问法 155
9.2.4数组元素的指针下标访问法 158
9.3数组作为函数的参数 159
9.4二维数组的定义和引用 162
9.4.1二维数组的定义和引用 162
9.4.2二维数组的存储 163
9.4.3二维数组的初始化 164
9.4.4二维数组程序举例 164
9.5字符数组 168
9.5.1字符数组的定义 168
9.5.2字符数组的初始化 169
9.5.3字符数组的输入输出 171
9.5.4字符数组与字符串 173
9.6指针与字符串 176
9.6.1指向字符数组的指针 176
9.6.2指向字符串常量的指针 177
9.6.3字符串作为函数参数 179
9.6.4字符串处理库函数 180
9.7动态内存分配 186
9.7.1 void类型的指针 186
9.7.2指针的强制类型转换 186
9.7.3动态内存分配 187
9.8综合实例 189
9.9掷骰子游戏 191
9.10显示游戏文本信息 194
10结构体和共用体 195
10.1结构体 195
10.2结构体数组 199
10.3结构体指针 201
10.4结构体与函数 205
10.5共用体 207
10.6枚举类型 208
10.7用typedef定义类型 209
11深入讨论指针 210
11.1指针数组 210
11.2指向指针的指针 214
11.3返回指针的函数 215
11.4指向函数的指针 218
11.4.1指向函数的指针 218
11.4.2指向函数的指针作为函数参数 220
11.5链表的概念 221
11.6单向链表的基本操作 223
12文件 231
12.1文件类型 231
12.2磁盘文件系统 232
12.3文件类型指针 232
12.4文件打开与关闭 233
12.5文件读写 235
13深入讨论函数与程序结构 240
13.1函数的递归调用 240
13.1.1编写递归函数求n ! 240
13.1.2迭代和递归 244
13.2带参的main函数 245
13.3内部函数和外部函数 246
13.3.1内部函数 246
13.3.2外部函数 246
13.4编译预处理 247
13.4.1宏定义 247
13.4.2文件包含 249
13.4.3条件编译 251
14综合应用设计 254
14.1实例说明 254
14.2俄罗斯方块程序源代码 255
14.3新出现的函数 267
14.3.1捕捉按键 267
14.3.2 memset函数 267
14.3.3 memcpy函数 267
14.4基本位置参数 268
14.4.1面板区 268
14.4.2下一个提示区 268
14.4.3信息显示区域 269
14.5画面内容的刷新 269
14.5.1将方块嵌入面板 269
14.5.2删除满行 269
14.6方块的运动 270
14.6.1定时下落 270
14.6.2 判断翻转 270
14.6.3翻转 271
14.6.4判断移动 271
14.6.5移动 271
14.6.6下落 271
14.6.7直落到底 271
参考文献 272