第1章 概述 1
1.1 C语言简介 1
1.2 C程序初探 3
1.2.1 简单的C程序 3
1.2.2 C程序的基本结构 6
1.2.3 C程序的基本词汇 8
1.3 算法及其描述 9
1.3.1 小试身手 9
1.3.2 算法的基本概念 13
1.3.3 算法的各种描述方法 14
1.4 C程序的开发步骤 17
1.5 本章小结 18
程序设计题1 18
第2章 简单的C程序设计 19
2.1 C语言的数据及其类型 19
2.1.1 C语言的数据 19
2.1.2 C语言的数据类型 19
2.2 常量 20
2.2.1 整型常量 20
2.2.2 实型常量 21
2.2.3 字符型常量 21
2.2.4 字符串常量 22
2.3 变量 22
2.3.1 变量及其说明 22
2.3.2 整型变量 24
2.3.3 实型变量 26
2.3.4 字符型变量 27
2.4 常用运算符和表达式 28
2.4.1 运算符和表达式 28
2.4.2 算术运算符 29
2.4.3 赋值运算符 32
2.4.4 关系运算符 33
2.4.5 逻辑运算符 34
2.4.6 条件运算符 35
2.4.7 逗号运算符 35
2.4.8 sizeof长度运算符 36
2.4.9 常用数学函数 36
2.4.10 各种运算符的优先级 37
2.4.11 数据类型的转换 37
2.5 基本的C语句 39
2.5.1 C语句 39
2.5.2 C语句分类 39
2.6 数据的输入和输出 41
2.7 字符数据的输入和输出 41
2.7.1 putchar函数(字符输出函数) 41
2.7.2 getchar函数(字符输入函数) 42
2.7.3 变量获取数据的几种方法 42
2.8 格式输入和输出 43
2.8.1 printf函数 43
2.8.2 scanf函数 46
2.9 简单顺序程序设计举例 48
2.10 本章小结 51
程序设计题2 52
第3章 分支和循环的C程序设计 53
3.1 程序的基本结构 53
3.2 选择结构 55
3.2.1 if结构的三种形式 55
3.2.2 switch结构和break语句 61
3.2.3 各种分支的嵌套 64
3.3 循环结构 67
3.3.1 while结构 68
3.3.2 do-while结构 70
3.3.3 for结构 70
3.3.4 转移语句 73
3.3.5 各种循环的嵌套 74
3.4 分支和循环的C程序设计 76
3.4.1 应用程序 76
3.4.2 2种程序设计的常用方法 85
3.5 结构化程序设计方法 86
3.5.1 关于goto 86
3.5.2 结构化程序设计的核心思想 87
3.5.3 自顶向下、逐步求精的程序设计方法 87
3.6 本章小结 90
程序设计题3 90
第4章 数组 91
4.1 数组的基本概念 91
4.1.1 引例 91
4.1.2 数组的基本概念 93
4.1.3 数组的分类 94
4.2 一维数组 94
4.2.1 一维数组的说明和引用 94
4.2.2 一维数组的存储 96
4.2.3 一维数组的初始化 96
4.2.4 一维数组的应用 98
4.3 多维数组 99
4.3.1 二维数组的说明和引用 100
4.3.2 二维数组的存储 100
4.3.3 二维数组的初始化 101
4.3.4 二维数组的应用 101
4.4 字符数组 103
4.4.1 字符数组 103
4.4.2 字符数组的输入和输出 105
4.4.3 字符串处理函数 106
4.5 数组应用举例 108
4.5.1 求极值问题 108
4.5.2 查找 111
4.5.3 排序 114
4.5.4 倒序 117
4.6 算法与效率 119
4.7 本章小结 122
程序设计题4 122
第5章 指针 124
5.1 指针的基本概念 124
5.1.1 地址和指针 124
5.1.2 指针的基本应用 125
5.1.3 指针的运算 127
5.2 指针与数值型数组 128
5.2.1 指针与一维数组 128
5.2.2 指针与多维数组 131
5.3 指针与字符数组及字符串 135
5.3.1 字符串与指针 135
5.3.2 字符数组与指针 137
5.4 指针数组和指向指针的指针 137
5.4.1 指针数组 137
5.4.2 指向指针的指针 141
5.5 程序代码风格 143
5.5.1 命名规范 143
5.5.2 表达式及语句风格 144
5.6 本章小节 145
程序设计题5 145
第6章 函数 147
6.1 函数的概念 147
6.1.1 函数的基本概念 148
6.1.2 函数的分类及调用过程 149
6.2 函数的定义与调用 150
6.2.1 函数的定义 150
6.2.2 函数的调用 153
6.2.3 函数调用数据的传递方式 156
6.2.3 函数的原型声明 158
6.3 变量的作用域与生存期 159
6.3.1 局部变量和全局变量 160
6.3.2 变量的存储类别 162
6.3.3 关于变量存储类别的说明 167
6.4 数组与函数参数 170
6.4.1 一维数组作为函数参数 170
6.4.2 二维数组作为函数参数 173
6.4.3 字符数组作为函数参数 174
6.5 返回指针的函数 176
6.6 指向函数的指针 177
6.7 递归函数 181
6.8 主函数参数 184
6.9 编译预处理 186
6.9.1 宏定义 186
6.9.2 文件包含 190
6.9.3 条件编译 192
6.10 模块化程序设计方法 194
6.11 本章小结 196
程序设计题6 196
第7章 结构和联合 197
7.1 引例 197
7.2 结构变量 199
7.2.1 结构体类型的定义 199
7.2.2 结构体变量的定义和初始化 200
7.2.3 结构体变量的使用 203
7.3 结构数组 204
7.3.1 结构数组的定义和初始化 205
7.3.2 结构数组的使用 205
7.4 结构与指针 207
7.4.1 指向结构体变量的指针 207
7.4.2 指向结构体数组的指针 209
7.5 结构体与函数 210
7.5.1 结构体变量作为函数参数 210
7.5.2 指向结构体变量的指针作为函数参数 211
7.5.3 返回结构体的函数 212
7.6 动态内存与链表 214
7.6.1 动态内存函数 214
7.6.2 动态内存与链表的基本概念 215
7.6.3 链表的基本操作 217
7.7 联合体 221
7.7.1 联合体类型的定义 222
7.7.2 联合体变量的定义 222
7.7.3 联合体变量的使用 223
7.8 枚举类型 225
7.8.1 枚举类型的定义 225
7.8.2 枚举变量的定义 226
7.8.3 枚举变量的使用 226
7.9 用户定义类型 227
7.10 本章小结 228
程序设计题7 228
第8章 位运算 229
8.1 位运算基本概念 229
8.1.1 位运算的基本概念 229
8.1.2 计算机中的数据表示 229
8.2 位运算符 231
8.2.1 逻辑位运算 232
8.2.2 移位位运算 236
8.3 位段 238
8.4 位运算案例 239
8.5 本章小结 241
程序设计题8 242
第9章 文件 243
9.1 文件 243
9.1.1 引言 243
9.1.2 文件 244
9.1.3 文件的分类 244
9.1.4 文件指针 245
9.1.5 文件的读写方式 246
9.2 文件的打开与关闭 246
9.2.1 文件的打开 246
9.2.2 文件的关闭 248
9.3 文件的顺序读写 248
9.3.1 字符输入输出函数 248
9.3.2 字符串输入输出函数 252
9.3.3 格式输入输出函数 254
9.3.4 数据块输入输出函数 256
9.3.5 整数输入输出函数 258
9.3.6 标准设备文件的输入和输出 259
9.4 文件的随机读写与定位 260
9.4.1 rewind函数 260
9.4.2 ftell函数 260
9.4.3 fseek函数 260
9.5 文件的错误检测 262
9.6 文件程序设计应用 263
9.7 本章小结 265
程序设计题9 266
第10章 综合实例 267
10.1 几种数值计算方法 267
10.1.1 定积分的数值计算 267
10.1.2 一元方程根的数值计算 271
10.1.3 蒙特卡洛法 274
10.2 通过C语言程序实现复数的各类运算 276
10.2.1 问题的定义 276
10.2.2 系统设计 277
10.2.3 程序及运行结果 278
10.3 学生成绩管理系统 285
10.3.1 需求分析 286
10.3.2 概要设计 287
10.3.3 详细设计 288
10.3.4 编码 291
10.3.5 学生成绩管理系统源码 292
10.4 本章小结 302
附录 303
参考文献 315