第1章 C语言概述 1
1.1 为什么要学习C语言 2
1.1.1 C语言的历史 2
1.1.2 C语言的特点 3
1.2 C语言的一个简单实例 3
1.3 编辑、编译、连接、运行一个C语言程序 4
1.4 学习C语言的必备知识 4
1.4.1 数制 5
1.4.2 数制之间的转换 5
1.4.3 整数的原码、补码、反码表示 6
习题 7
第2章 数据类型、运算符、表达式、赋值语句、输入和输出 9
2.1 C语言的词法记号 10
2.1.1 关键词 10
2.1.2 标识符 11
2.1.3 分隔符 11
2.2 数据类型 11
2.2.1 整型 11
2.2.2 浮点型 12
2.2.3 字符型 12
2.3 常量和变量 12
2.3.1 常量 12
2.3.2 变量 13
2.4 运算符和表达式 14
2.4.1 算术运算符和算术表达式 14
2.4.2 关系运算符和关系表达式 15
2.4.3 逻辑运算符和逻辑表达式 15
2.4.4 赋值运算符和赋值表达式 16
2.4.5 条件表达式和逗号表达式 17
2.4.6 类型转换 17
2.5 变量初始化和赋值语句 18
2.5.1 变量的初始化 18
2.5.2 赋值语句 18
2.6 数据输出 18
2.7 数据输入 22
2.8 程序实例 24
习题 27
上机实训题 28
第3章 分支结构 31
3.1 语句概述 32
3.2 问题的引出 33
3.3 if语句 34
3.3.1 if语句的一般形式 34
3.3.2 if-else中的复合语句 35
3.3.3 if语句的省略形式 37
3.3.4 较复杂的条件表达式 38
3.3.5 非关系/逻辑表达式构成的条件表达式 38
3.3.6 同一个条件的多种表达方式 39
3.4 if语句的嵌套 39
3.4.1 嵌套的引出 39
3.4.2 流程图 40
3.4.3 if与else的配对规则 41
3.4.4 嵌套举例 42
3.5 switch语句 45
习题 51
上机实训题 54
第4章 循环结构 55
4.1 while语句 56
4.2 do-while语句 59
4.3 for语句 60
4.3.1 for语句的一般形式 60
4.3.2 for语句形式的多样性 61
4.3.3 循环次数确定的情况 62
4.3.4 循环次数不确定的情况 64
4.4 循环的嵌套 66
4.5 几种循环的比较 67
4.6 break、continue、goto语句 68
4.6.1 break语句 68
4.6.2 continue语句 69
4.6.3 goto语句 69
4.7 程序实例 71
4.8 结构化程序设计 73
习题 74
上机实训题 78
第5章 函数、存储类和预处理程序 79
5.1 函数 80
5.1.1 引言 80
5.1.2 函数的定义 81
5.1.3 函数调用和参数传递 83
5.1.4 函数的说明 85
5.1.5 函数的嵌套调用与递归调用 86
5.2 变量的作用域和生命期 89
5.2.1 问题的提出 89
5.2.2 auto变量 90
5.2.3 extem变量 92
5.2.4 static变量 94
5.2.5 register变量 95
5.2.6 存储类别小结 96
5.3 预处理程序 98
5.3.1 文件包含 98
5.3.2 宏替换 99
5.3.3 条件编译 100
习题 101
上机实训题 105
第6章 数组 107
6.1 问题的引出 108
6.2 一维数组 108
6.2.1 一维数组的说明、引用和存储 108
6.2.2 一维数组的初始化 110
6.2.3 一维数组的经典实例 111
6.3 二维数组 115
6.3.1 二维数组的说明、引用和存储 115
6.3.2 二维数组的初始化 117
6.3.3 二维数组的经典实例 117
6.4 字符数组与字符串 119
6.4.1 字符数组的说明与初始化 119
6.4.2 字符串 120
6.4.3 字符数组的经典实例 121
6.5 数组应用实例 122
6.5.1 直接插入排序 122
6.5.2 二分查找 124
6.5.3 用数组求Fibonacci数列 126
6.5.4 一个数模求解实例 127
习题 132
上机实训题 134
第7章 指针 135
7.1 地址和指针 136
7.1.1 地址 136
7.1.2 指针 136
7.2 指针变量 137
7.2.1 指针变量的说明 137
7.2.2 指针变量的运算 138
7.3 指针作为函数参数 139
7.3.1 问题的提出 139
7.3.2 解决方法 140
7.3.3 程序实例 141
7.4 指针与数组 142
7.4.1 指针与数组的关系 142
7.4.2 用指针形参对应数组名实参 144
7.4.3 程序实例 145
7.5 指针的运算 147
7.6 字符指针 148
7.6.1 用字符指针处理字符串 148
7.6.2 字符串处理函数 150
7.6.3 使用字符数组和字符指针处理字符串的区别 152
7.7 指针数组和指向指针的指针 154
7.7.1 指针数组 154
7.7.2 指向指针的指针 155
7.7.3 指向指针的指针的应用 155
7.7.4 带形参的main函数 158
7.8 指向函数的指针 159
7.9 程序实例 161
习题 165
上机实训题 167
第8章 常用库函数和软件开发概述 169
8.1 常用库函数 170
8.1.1 输入/输出函数 170
8.1.2 数学计算 170
8.1.3 数据类型测试和转换 171
8.1.4 其他 173
8.2 软件开发概述 174
8.2.1 中小规模软件开发步骤 174
8.2.2 衡量软件质量的几个主要准则 174
8.3 使用C语言时常犯的错误 175
8.3.1 编译程序能查出的错误 175
8.3.2 编译程序不能发现的错误 177
8.4 程序实例 178
习题 180
第9章 结构和杂类 181
9.1 结构 182
9.1.1 结构类型的定义 182
9.1.2 结构变量的说明和引用 182
9.1.3 结构数组 183
9.1.4 结构与函数 186
9.2 指针在结构中的应用 187
9.2.1 指向结构变量的指针 187
9.2.2 用结构指针作为函数参数 188
9.2.3 链表 189
9.3 杂类 192
9.3.1 位运算 192
9.3.2 位段 194
9.3.3 联合 194
9.3.4 枚举 195
9.3.5 类型定义 196
9.3.6 多文件 196
习题 198
上机实训题 200
第10章 文件 203
10.1 文件概述 204
10.1.1 文件的概念 204
10.1.2 文件的分类 204
10.1.3 缓冲文件系统和非缓冲文件系统 205
10.2 缓冲文件系统 205
10.2.1 缓冲文件系统的基本概念 205
10.2.2 缓冲文件的打开和关闭 206
10.2.3 缓冲文件的读/写 209
10.2.4 缓冲文件的定位 213
10.2.5 综合实例 216
10.3 非缓冲文件系统 217
10.3.1 非缓冲文件系统的基本概念 217
10.3.2 非缓冲文件的建立 218
10.3.3 非缓冲文件的打开和关闭 218
10.3.4 非缓冲文件的读/写 218
10.3.5 非缓冲文件的定位 219
习题 219
上机实训题 220
附录 221
附录1 ASCII码表 222
附录2 C语言关键词 223
附录3 C语言运算符 223
参考文献 224