第1章 C语言概述 1
1.1 C语言的发展及特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 2
1.2 初步认识C语言程序 2
1.2.1 C语言程序的格式 4
1.2.2 C语言程序的构成 4
1.2.3 C语言程序的基本要求 5
1.3 软件开发方法 5
1.3.1 软件开发方法 5
1.3.2 算法 5
1.3.3 结构化程序设计 6
1.4 C语言程序上机调试步骤和方法 7
1.5 小结 10
习题 10
第2章 C语言程序设计的初步知识 12
2.1 C语言的数据类型 12
2.2 标识符 12
2.2.1 系统定义标识符 13
2.2.2 用户定义标识符 13
2.3 常量 13
2.3.1 整型常量 14
2.3.2 实型常量 14
2.3.3 字符常量 15
2.3.4 字符串常量 16
2.3.5 符号常量 16
2.4 变量 17
2.4.1 变量名称 17
2.4.2 变量的类型 17
2.4.3 变量的赋值 18
2.5 运算符与表达式 19
2.5.1 算术运算符和算术表达式 19
2.5.2 赋值运算符和赋值表达式 20
2.5.3 关系运算符和关系表达式 21
2.5.4 逻辑运算符和逻辑表达式 21
2.5.5 条件运算符和条件表达式 22
2.5.6 逗号运算符和逗号表达式 23
2.6 自增(自减)运算符及C语言运算符的优先级别 23
2.6.1 自增、自减运算符 23
2.6.2 C语言运算符的优先级与结合性 24
2.7 不同类型数据间的混合运算(包含数据类型转换) 25
2.7.1 自动类型转换 25
2.7.2 强制类型转换 25
2.8 小结 26
习题 26
第3章 顺序结构程序设计 28
3.1 任务1——将英里转换为公里 28
3.2 C语句 30
3.3 数据的输出 33
3.3.1 数据输入输出的概念及在C语言中的实现 33
3.3.2 字符输出函数(putchar函数) 34
3.3.3 格式输出函数(printf函数) 35
3.4 数据的输入 38
3.4.1 字符输入函数(getchar函数) 38
3.4.2 格式输入函数(scanf函数) 39
3.5 小型案例 43
3.6 小结 46
习题 47
第4章 选择结构程序设计 49
4.1 任务2——有节约要求的水费问题 49
4.2 if语句 51
4.2.1 if语句的三种形式 51
4.2.2 if语句的嵌套 55
4.3 switch语句 57
4.4 小型案例 60
4.5 小结 62
习题 63
第5章 循环结构程序设计 67
5.1 任务3——公司员工薪水计算 67
5.2 while语句 69
5.3 do-while语句 70
5.4 for语句 73
5.5 循环嵌套 77
5.6 goto语句以及用goto语句构成循环 81
5.7 break语句和continue语句 82
5.7.1 break语句 82
5.7.2 continue语句 83
5.8 小型案例 84
5.9 小结 89
习题 90
第6章 数组 94
6.1 任务4——用冒泡法对10个数排序 94
6.2 一维数组 96
6.2.1 一维数组的定义 96
6.2.2 一维数组元素的引用 97
6.2.3 一维数组的初始化 97
6.2.4 一维数组的应用 98
6.3 二维数组 98
6.3.1 二维数组的定义 98
6.3.2 二维数组元素的引用 99
6.3.3 二维数组的初始化 100
6.3.4 二维数组的应用 101
6.4 字符数组 103
6.4.1 字符数组的定义及初始化 103
6.4.2 字符数组元素的引用 104
6.4.3 字符串数组 105
6.4.4 字符数组的输入与输出 107
6.4.5 字符串数组处理函数 108
6.5 小型案例 112
6.6 小结 115
习题 115
第7章 函数 118
7.1 任务5——从身份证号码中间提取出生日期、性别、年龄等信息 118
7.2 函数的概念 122
7.2.1 库函数的使用 122
7.2.2 函数的定义 122
7.2.3 函数的声明 124
7.3 函数的参数和返回值 124
7.3.1 函数的参数 124
7.3.2 函数的返回值 125
7.4 函数的参数传递方式 125
7.4.1 值的传递 126
7.4.2 地址的传递 126
7.5 函数的调用 128
7.5.1 函数的一般调用 128
7.5.2 函数的嵌套调用 128
7.5.3 函数的递归调用 129
7.6 变量的作用域和存储类型 130
7.6.1 变量的作用域 130
7.6.2 变量的存储类型 130
7.7 函数的作用范围 133
7.7.1 内部函数 133
7.7.2 外部函数 133
7.8 小型案例 133
7.9 小结 135
习题 136
第8章 编译预处理 138
8.1 任务6——求解某校园圆形花坛的圆周长及圆面积 138
8.2 宏定义 140
8.2.1 无参宏 140
8.2.2 带参宏 140
8.2.3 终止宏定义 141
8.3 文件包含命令 141
8.4 条件编译 143
8.4.1 带#if、 #else和#endif标识的 143
8.4.2 带#ifdef标识的 143
8.4.3 带#ifndef标识的 144
8.5 小型案例 145
8.6 小结 146
习题 146
第9章 指针 148
9.1 任务7——利用指针变量完成税率的调整并打印前后结果 148
9.2 指针变量 150
9.2.1 指针变量的定义 151
9.2.2 指针变量的引用 151
9.2.3 指针变量的运算 154
9.3 指针与数组 159
9.3.1 指针与一维数组 159
9.3.2 指针与二维数组 161
9.3.3 指针数组 164
9.4 指针与字符串 166
9.4.1 用字符数组存放一个字符串 166
9.4.2 字符指针指向一个字符串 166
9.4.3 字符数组和字符指针变量的区别 169
9.5 指针与函数 171
9.5.1 指向函数的指针 171
9.5.2 指针函数 172
9.5.3 指针变量作为函数的参数 173
9.5.4 数组名作为函数的参数 174
9.5.5 指向函数的指针作为函数的参数 176
9.6 指向指针的指针变量 177
9.7 main()函数的形参和void指针 178
9.7.1 指针数组作为main函数的形参 178
9.7.2 指向void的指针变量 180
9.8 小型案例 180
9.9 小结 182
习题 182
第10章 构造数据类型 187
10.1 任务8————输出一批学生的基本信息 187
10.2 结构体 190
10.2.1 结构体定义 190
10.2.2 结构体变量 193
10.2.3 结构体变量的使用 195
10.3 结构体与函数 196
10.3.1 结构变量与数组结构作为函数的参数 197
10.3.2 结构变量作为函数的返回值 197
10.4 结构体与指针 198
10.4.1 结构体变量指针 198
10.4.2 结构体数组指针 199
10.5 链表 201
10.5.1 链表概述 201
10.5.2 链表的基本操作 202
10.6 共用体 202
10.7 枚举类型 204
10.8 typedef类型声明 206
10.9 小型案例 207
10.10 小结 208
习题 210
第11章 文件 212
11.1 任务9————磁盘文件信息复制 212
11.2 文件类型指针 216
11.3 文件的基本操作 217
11.3.1 文件的打开 217
11.3.2 文件的关闭 219
11.3.3 文件读函数 220
11.3.4 文件写函数 226
11.4 文件的定位函数 232
11.4.1 rewind()函数 232
11.4.2 fseek()函数和随机读写 232
11.5 文件出错检测函数 234
11.5.1 ferror()函数 234
11.5.2 clearerr()函数 235
11.6 小型案例 235
11.7 小结 238
习题 239
第12章 位运算 242
12.1 位的运算 242
12.1.1 “按位与”运算符(&) 242
12.1.2 “按位或”运算符(|) 243
12.1.3 “异或”运算符(∧) 243
12.1.4 “取反”运算符(~) 244
12.1.5 左移运算符(<<) 245
12.1.6 右移运算符(>>) 245
12.1.7 位运算赋值运算符 246
12.1.8 不同长度的数据进行位运算 246
12.2 位段 246
12.3 小型案例 249
12.4 小结 252
习题 253
附录 256
参考文献 259