第1章 C语言概述 1
1.1 一个C语言程序 1
1.2 计算机程序设计与程序设计语言 2
1.2.1 程序与指令 2
1.2.2 程序设计语言 4
1.3 C语言的发展与应用现状 4
1.4 C语言的特点 5
1.4.1 C语言的优势 5
1.4.2 如何学习C语言程序设计 6
1.4.3 C语言的语法特点 6
1.4.4 C语言的结构特点 8
1.4.5 C语言的编译与编程环境 8
习题 9
第2章 用C语言编写简单程序 11
2.1 在屏幕上显示自定义文字“Hello World!” 11
2.1.1 程序解析 11
2.1.2 程序的三种结构 12
2.2 摄氏温度与华氏温度换算(简单的顺序结构程序的编写) 13
2.2.1 程序解析 14
2.2.2 常量、变量和数据类型 14
2.2.3 赋值运算和算术运算 15
2.2.4 格式化输出函数printf 16
2.3 判断一元二次方程是否有实数解(简单的分支结构程序的编写) 16
2.3.1 程序解析 17
2.3.2 关系运算 17
2.3.3 if...else二分支语句 18
2.3.4 格式化输入函数scanf 18
2.4 计算自由落体反弹高度和总距离(简单的循环结构程序——for语句的编写) 19
2.4.1 指定次数的循环程序设计 19
2.4.2 for语句 20
2.4.3 计算自由落体反弹高度和总距离 21
2.4.4 程序解析 21
习题 22
第3章 分支结构程序设计 24
3.1 从键盘输入一个控制命令字符,判断输入是否正确 24
3.1.1 程序解析 24
3.1.2 字符类型 25
3.1.3 逻辑运算符和逻辑表达式 26
3.1.4 字符型数据的输入和输出 27
3.2 分支结构程序设计——求解一元二次方程 29
3.2.1 程序解析 29
3.2.2 if语句的三种形式 30
3.2.3 if语句的嵌套 33
3.3 模拟工程控制,根据指令进行相应的操作 34
3.3.1 程序解析 34
3.3.2 switch语句 35
习题 37
第4章 循环结构程序设计 40
4.1 输入一批学生的成绩,统计平均分 40
4.1.1 程序解析 40
4.1.2 while语句 41
4.1.3 数列问题求解 41
4.2 用牛顿迭代法求方程2x3-4x2+3x-6=0的根 43
4.2.1 程序解析 43
4.2.2 do…while语句 44
4.2.3 循环语句的选择 44
4.3 打印九九乘法表 45
4.3.1 程序解析 45
4.3.2 循环的嵌套 46
4.4 求素数 47
4.4.1 程序解析 47
4.4.2 用break语句和continue语句改变循环状态 48
4.5 复杂循环结构程序设计 50
4.5.1 傅里叶级数逼近 50
4.5.2 数据处理与回归分析 51
习题 53
第5章 C语言的数据类型和表达式 57
5.1 C语言的基本数据类型 57
5.2 常量和变量 58
5.2.1 常量 58
5.2.2 变量 60
5.3 运算符和表达式 61
5.3.1 算术运算符和算术表达式 62
5.3.2 强制类型转换运算符 64
5.3.3 自增、自减运算符 64
5.3.4 赋值运算符和赋值表达式 65
5.3.5 关系运算符和表达式 67
5.3.6 逻辑运算符和表达式 68
5.3.7 条件表达式 69
5.3.8 逗号表达式 70
5.4 综合程序设计案例 71
5.5 算法与程序设计 72
习题 74
第6章 数组 76
6.1 排序问题 76
6.1.1 程序解析 76
6.1.2 一维数组的定义和引用 77
6.1.3 一维数组的初始化 78
6.1.4 使用一维数组编程 79
6.2 找出矩阵中最大值所在的位置 84
6.2.1 程序解析 84
6.2.2 二维数组的定义和引用 85
6.2.3 二维数组的初始化 87
6.3 数据通信过程中的信息加密问题 88
6.3.1 程序解析 88
6.3.2 一维字符数组 89
6.3.3 字符串处理 91
习题 98
第7章 函数 100
7.1 用函数求几何图形的面积 100
7.1.1 程序解析 100
7.1.2 函数的定义 101
7.1.3 函数的声明 103
7.1.4 函数的调用 104
7.2 用函数求Fibonacci数列 106
7.2.1 程序解析 106
7.2.2 形式参数与实际参数 106
7.2.3 函数的返回值 108
7.2.4 值传递与地址传递 108
7.3 变量与函数 115
7.3.1 局部变量和全局变量 115
7.3.2 变量的存储类别 118
7.3.3 函数的递归调用——求n! 120
习题 125
第8章 指针及其应用 128
8.1 替代用变量名引用数据的新方法 128
8.1.1 指针概念的引入 128
8.1.2 定义指针变量 131
8.1.3 指针与变量的关系 132
8.1.4 为指针变量赋值及指针变量的初始化 132
8.1.5 利用指针变量进行数据处理 133
8.2 指针和一维数组 135
8.3 利用被调函数对主调函数中的数组元素进行冒泡排序 138
8.3.1 指针变量作为函数参数 138
8.3.2 数组名作为函数的参数 139
8.4 字符串和字符指针 141
8.4.1 字符串常量的值 142
8.4.2 使用字符指针处理字符串的程序举例 142
习题 145
第9章 结构体、共用体和枚举类型 148
9.1 按价格排序输出一组待售汽车的信息 148
9.1.1 程序解析 148
9.1.2 结构体类型的概念和定义 149
9.1.3 结构体类型变量的定义 150
9.1.4 结构体类型变量的使用 153
9.1.5 结构体变量作为函数参数 155
9.2 编写一个书籍管理程序,显示所有书籍信息 158
9.2.1 程序解析 158
9.2.2 结构体数组 159
9.2.3 结构体数组的应用实例 160
9.3 共用体——每个时刻只能有一个成员占用内存的“结构体” 161
9.3.1 程序解析 161
9.3.2 共用体类型的定义 162
9.3.3 共用体变量的定义 163
9.3.4 共用体变量的引用 164
9.4 让变量的取值局限于特定范围 167
9.4.1 枚举类型的定义 168
9.4.2 枚举变量的定义 169
9.4.3 枚举类型的应用 170
9.5 随心所欲地安排数据类型名——typedef的使用方法 172
9.5.1 利用typedef定义类型名 172
9.5.2 typedef的典型用法 173
习题 174
第10章 宏定义与文件包含 176
10.1 宏定义 176
10.1.1 程序解析 176
10.1.2 无参宏定义 177
10.1.3 带参宏定义 179
10.2 文件包含 182
10.3 条件编译 184
习题 187
第11章 文件 191
11.1 将“欢迎卓越工程师”写入文件 191
11.1.1 程序解析 191
11.1.2 C文件概述 192
11.1.3 文件指针 193
11.1.4 文件的打开与关闭 193
11.2 文件的读写——读取工程文件 195
11.2.1 程序解析——读取工程文件 195
11.2.2 字符读写函数fgetc和fputc 196
11.2.3 字符串读写函数fgets和fputs 199
11.2.4 数据块读写函数fread和fwrite 200
11.2.5 格式化读写函数fscanf和fprintf 202
11.3 文件的随机读写 203
11.3.1 改变文件位置指针函数fseek() 203
11.3.2 位置指针重返文件头函数rewind() 204
11.3.3 位置指针当前值函数ftell() 205
11.3.4 文件的随机读写 205
11.4 文件检测函数 206
11.4.1 文件结束检测函数feof函数 206
11.4.2 读写文件出错检测函数ferror函数 206
11.4.3 文件出错标志和文件结束标志置0函数clearerr函数 206
习题 207
附录A ASCII编码表 210
附录B C语言常用的库函数 211
附录C C语言运算符优先级表 217
参考文献 218