第1单元 程序设计概述 1
1.1 程序设计的基本概念 1
1.1.1 计算机语言和程序 1
1.1.2 算法 2
1.1.3 程序设计 4
1.1.4 程序的错误和测试 4
1.1.5 输入/输出 5
1.2 C语言程序 5
1.2.1 C语言概述 5
1.2.2 简单的C程序及其包含的概念 6
1.2.3 标识符与保留字 9
1.2.4 C语言程序的基本特点 9
1.2.5 C语言程序的上机实现 10
1.3 编程实践 13
单元小结 14
习题一 15
第2单元 数据及其运算 16
2.1 数据及数据类型 16
2.2 常量 17
2.2.1 整型常量 17
2.2.2 浮点型常量 18
2.2.3 字符常量 18
2.2.4 字符串常量 19
2.2.5 符号常量 19
2.3 变量 20
2.3.1 变量的值 20
2.3.2 整型变量 20
2.3.3 浮点型变量 21
2.3.4 字符型变量 22
2.4 运算符和表达式 24
2.4.1 算术运算 24
2.4.2 关系运算 25
2.4.3 逻辑运算 26
2.4.4 其他运算 28
2.5 表达式中数据类型的自动转换 31
单元小结 32
习题二 33
第3单元 程序设计基础 35
3.1 程序的三种控制结构 35
3.1.1 概述 35
3.1.2 三种结构的框图表示 37
3.2 基本的输出/输入函数 39
3.2.1 格式化输出函数printf() 39
3.2.2 格式化输入函数scanf() 42
3.2.3 字符输出函数putchar() 45
3.2.4 字符输入函数getchar() 46
3.3 顺序结构程序设计 46
单元小结 49
习题三 49
第4单元 分支结构程序设计 51
4.1 if语句 51
4.1.1 if语句的简单形式 51
4.1.2 if语句的一般形式 53
4.1.3 if语句的嵌套结构 55
4.1.4 if-else if结构 57
4.1.5 条件运算 58
4.2 switch语句 58
4.3 goto语句 60
4.4 选择结构应用举例 62
单元小结 64
习题四 65
第5单元 循环结构程序设计基础 66
5.1 循环控制语句 66
5.1.1 while循环语句 66
5.1.2 do-while语句 69
5.1.3 for语句 70
5.1.4 三种循环语句的比较 73
5.2 循环体中的控制语句 73
5.2.1 break语句 73
5.2.2 continue语句 74
5.3 多重循环 75
5.3.1 多重循环的概念 75
5.3.2 多重循环的结构 77
单元小结 77
习题五 78
第6单元 循环结构程序设计应用 79
6.1 单循环程序 79
6.1.1 比赛评分问题 79
6.1.2 学生成绩分档统计 81
6.1.3 最大公约数 83
6.1.4 Fibonacci数列 84
6.2 多重循环程序 85
6.2.1 乘法表程序 85
6.2.2 搬砖问题 86
6.2.3 素数问题 88
6.2.4 哥德巴赫猜想问题 90
单元小结 91
习题六 91
第7单元 数组基础 93
7.1 一维数组 93
7.1.1 一维数组的定义 94
7.1.2 数值型一维数组的初始化 95
7.1.3 字符型一维数组的初始化 97
7.1.4 一维数组的存储 98
7.2 字符串操作 99
7.2.1 字符串的输入/输出 99
7.2.2 多字符串操作函数 102
7.2.3 其他字符串操作函数 105
7.3 二维数组 105
7.3.1 二维数组的定义 105
7.3.2 二维数组的初始化 107
7.3.3 二维数组的存储 109
单元小结 109
习题七 110
第8单元 数组应用 111
8.1 一维数组的应用 111
8.1.1 排序 111
8.1.2 查找 113
8.1.3 单词统计 114
8.1.4 找子串 116
8.2 二维数组的应用 117
8.2.1 矩阵运算 117
8.2.2 成绩处理 120
8.2.3 杨辉三角形 123
单元小结 124
习题八 125
第9单元 函数基础 126
9.1 函数概述 126
9.2 函数的定义及使用 128
9.2.1 函数的定义 128
9.2.2 使用自定义函数 131
9.2.3 函数定义和使用举例 132
9.3 函数中变量的属性 136
9.3.1 局部变量和全局变量 136
9.3.2 变量的存储类型 138
单元小结 139
习题九 140
第10单元 函数应用 142
10.1 函数的嵌套和递归 142
10.1.1 函数的嵌套 142
10.1.2 递归函数 144
10.2 数组作为函数的参数 147
10.2.1 数组元素作为函数参数 147
10.2.2 一维数组名作为函数参数 148
10.2.3 用一维数组求解二维数组问题 152
单元小结 154
习题十 154
第11单元 指针基础 155
11.1 概述 155
11.1.1 指针和指针变量 155
11.1.2 直接访问数据和间接访问数据 156
11.2 指针变量的定义和使用 157
11.2.1 指针变量的定义 157
11.2.2 指针变量的赋值 157
11.2.3 指针运算符 158
11.3 数组与指针 159
11.3.1 一维数组与指针 160
11.3.2 二维数组与指针 162
11.3.3 指针和字符串 166
11.3.4 指针数组 167
单元小结 168
习题十一 169
第12单元 指针和函数 171
12.1 指针作为函数的参数 171
12.1.1 简单指针变量作函数参数 172
12.1.2 指向数组的指针作函数的参数 173
12.1.3 字符串指针作函数的参数 176
12.1.4 指针数组作函数的参数 178
12.1.5 使用参数的main()函数 179
12.2 指针函数和指向函数的指针变量 180
12.2.1 指针函数 180
12.2.2 指向函数的指针变量 183
12.3 动态内存管理函数 184
12.3.1 动态内存分配 184
12.3.2 动态内存管理函数 184
单元小结 187
习题十二 187
第13单元 结构体 189
13.1 结构体类型 189
13.1.1 结构体类型概述 189
13.1.2 结构体类型定义 190
13.2 结构体变量 192
13.2.1 结构体变量定义 192
13.2.2 结构体成员引用 193
13.2.3 结构体变量初始化 194
13.3 结构体数组 195
13.3.1 结构体数组概述 195
13.3.2 结构体数组的初始化 196
13.3.3 结构体数组的应用 196
13.4 结构体指针 199
13.4.1 结构体指针变量的定义及使用 199
13.4.2 结构体指针作函数的参数 202
单元小结 203
习题十三 204
第14单元 链表 205
14.1 链表概述 205
14.1.1 链表的概念 205
14.1.2 链表的特点 207
14.1.3 定义链表结构 207
14.2 链表的基本操作 208
14.2.1 链表结点的插入 209
14.2.2 链表结点的删除 212
14.2.3 链表结点的查找 213
14.2.4 Josephus问题 218
单元小结 220
习题十四 220
第15单元 文件 221
15.1 文件概述 222
15.1.1 文件的概念 222
15.1.2 文件的分类 222
15.1.3 文件的一般操作过程 223
15.1.4 文件的指针 223
15.2 文件的基本操作 224
15.2.1 打开和关闭文件 224
15.2.2 最基本的文件读/写函数 226
15.3 文件的数据块读/写操作 229
15.3.1 fread()函数 229
15.3.2 fwrite()函数 230
15.4 文件的其他操作 233
15.4.1 文件的格式化读/写 233
15.4.2 文件的随机读/写操作 234
15.4.3 ftell()函数 236
15.4.4 文件的字符串操作 237
单元小结 238
习题十五 238
第16单元 共用体、枚举和位运算 239
16.1 共用体 239
16.1.1 共用体概述 239
16.1.2 共用体类型定义 240
16.1.3 共用体变量的定义 240
16.1.4 共用体变量的引用 241
16.1.5 共用体数据特点 242
16.2 枚举 243
16.2.1 枚举概述 243
16.2.2 枚举类型及枚举变量 243
16.2.3 枚举应用 245
16.3 位运算 246
16.3.1 位运算概述 246
16.3.2 基本的位运算 247
16.3.3 位运算应用 250
16.3.4 位段 251
单元小结 253
习题十六 253
第17单元 编译预处理和数据类型再命名 255
17.1 编译预处理 255
17.1.1 宏定义 255
17.1.2 文件包含 261
17.1.3 条件编译 263
17.2 数据类型再命名 265
单元小结 266
习题十七 266
第18单元 从C到C++ 268
18.1 C++的特点 268
18.2 简单的C++程序 269
18.3 C++的输入和输出 271
18.3.1 用cout输出 272
18.3.2 用cin输入 272
18.4 内联函数 273
18.5 函数重载 274
18.6 函数参数的默认值 277
18.7 变量的引用 279
18.7.1 引用的概念 279
18.7.2 引用作函数参数 281
单元小结 282
习题十八 282
参考文献 284