第1章 程序设计基础 1
一、知识体系 1
二、学习纲要 1
1.1 程序设计初步 1
1.2 算法及表示 2
1.2.1 算法的特性 2
1.2.2 算法的表示 2
1.3 程序设计及结构化程序设计方法 3
1.3.1 程序设计 3
1.3.2 结构化程序设计 3
1.4 C语言程序的构成 3
1.5 程序的书写格式 4
三、实验环节 5
四、测试练习 11
习题1 11
习题1参考答案 12
第2章 数据类型、运算符和表达式 15
一、知识体系 15
二、学习纲要 16
2.1 C语言数据类型简介 16
2.2 标识符 16
2.2.1 字符集 16
2.2.2 标识符的命名 16
2.2.3 标识符的分类 16
2.3 常量 17
2.3.1 数值常量 17
2.3.2 字符常量和字符串常量 17
2.3.3 符号常量 17
2.4 变量 17
2.4.1 整型变量 18
2.4.2 实型变量 18
2.4.3 字符变量 18
2.5 数据间的混合运算 18
2.6 变量赋初值 18
2.7 运算符和表达式 18
2.7.1 C语言运算符简介 18
2.7.2 C语言表达式的类型 19
2.7.3 表达式的求值规则 19
2.7.4 算术运算符和算术表达式 19
2.7.5 赋值运算符和赋值表达式 20
2.7.6 逗号运算符和逗号表达式 20
2.7.7 关系运算符和关系表达式 21
2.7.8 逻辑运算符和逻辑表达式 21
2.7.9 条件运算符和条件表达式 22
三、实验环节 22
四、测试练习 24
习题2 24
习题2参考答案 29
第3章 顺序结构程序设计 30
一、知识体系 30
二、学习纲要 30
3.1 C语句概述 30
3.2 赋值语句 31
3.3 数据的输入和输出 31
3.3.1 putchar函数和getchar函数 31
3.3.2 printf函数和scanf函数 32
3.4 顺序结构程序设计简介 33
三、实验环节 33
四、测试练习 38
习题3 38
习题3参考答案 47
第4章 选择结构程序设计 52
一、知识体系 52
二、学习纲要 52
4.1 if语句 52
4.2 if语句的嵌套 54
4.3 多分支结构 54
三、实验环节 55
四、测试练习 61
习题4 61
习题4参考答案 71
第5章 循环结构程序设计 78
一、知识体系 78
二、学习纲要 78
5.1 goto语句及用goto语句构成的循环 78
5.2 while语句 79
5.3 do…while语句 79
5.4 for语句 79
5.5 几种循环的比较 80
5.6 循环嵌套 80
5.7 break语句 80
5.8 continue语句 81
三、实验环节 81
四、测试练习 84
习题5 84
习题5参考答案 95
第6章 数组 101
一、知识体系 101
二、学习纲要 101
6.1 数组和数组元素 101
6.2 一维数组 102
6.2.1 一维数组的定义和使用 102
6.2.2 一维数组的初始化 102
6.3 多维数组 102
6.3.1 二维数组的定义和引用 102
6.3.2 二维数组的初始化 102
6.4 字符数组 103
6.4.1 字符数组的定义和使用 103
6.4.2 字符数组的初始化 103
6.4.3 字符串的输入和输出 103
6.4.4 用于字符处理的库函数 104
三、实验环节 104
四、测试练习 108
习题6 108
习题6参考答案 119
第7章 函数 124
一、知识体系 124
二、学习纲要 124
7.1 概述 124
7.2 函数定义的一般形式 125
7.2.1 无参函数的定义 125
7.2.2 有参函数的定义 125
7.2.3 空函数的定义 125
7.3 函数参数和函数的值 125
7.3.1 形式参数和实际参数 125
7.3.2 函数的返回值 126
7.4 函数的调用 126
7.4.1 函数调用的形式 126
7.4.2 函数调用的方式 126
7.4.3 被调用函数的声明和函数原型 127
7.5 函数的嵌套调用 127
7.6 函数的递归调用 127
7.7 局部变量和全局变量 127
7.7.1 局部变量 127
7.7.2 全局变量 128
7.8 动态存储变量和静态存储变量 128
7.8.1 变量的存储类别 128
7.8.2 局部变量的存储方式 128
7.8.3 全局变量的存储方式 128
7.8.4 存储类别小结 128
7.9 内部函数和外部函数 129
7.9.1 内部函数 129
7.9.2 外部函数 130
三、实验环节 130
四、测试练习 134
习题7 134
习题7参考答案 144
第8章 编译预处理 147
一、知识体系 147
二、学习纲要 147
8.1 宏定义 147
8.1.1 不带参数的宏定义 147
8.1.2 带参数的宏定义 147
8.2 “文件包含”处理 148
8.3 条件编译 148
三、实验环节 148
四、测试练习 150
习题8 150
习题8参考答案 157
第9章 指针 160
一、知识体系 160
二、学习纲要 160
9.1 地址和指针的概念 160
9.2 变量的指针和指向变量的指针变量 161
9.2.1 指针变量的定义 161
9.2.2 指针变量的引用 161
9.2.3 用指针变量作为函数参数 161
9.3 数组的指针和指向数组的指针变量 161
9.3.1 指向数组元素的指针 161
9.3.2 通过指针引用数组元素 161
9.3.3 用数组名作为函数参数 162
9.3.4 指向多维数组的指针和指针变量 162
9.4 字符串的指针和指向字符串的指针变量 163
9.4.1 字符串的表示形式 163
9.4.2 对使用字符指针变量与字符数组的讨论 163
9.4.3 用字符串指针作为函数参数 164
9.5 函数的指针和指向函数的指针变量 164
9.5.1 用函数指针变量调用函数 164
9.5.2 用指向函数的指针变量作为函数参数 164
9.6 返回指针值的函数 164
9.7 指针数组和指向指针的指针 164
9.7.1 指针数组的概念 164
9.7.2 指向指针的指针 164
9.7.3 main函数的命令行参数 165
三、实验环节 165
四、测试练习 169
习题9 169
习题9参考答案 173
第10章 结构体与共用体 179
一、知识体系 179
二、学习纲要 179
10.1 概述 179
10.2 定义结构体类型变量的方法 179
10.3 结构体变量的引用 180
10.4 结构体变量的初始化 180
10.5 结构体数组 180
10.5.1 定义结构体数组 180
10.5.2 结构体数组的初始化 180
10.5.3 结构体数组应用举例 181
10.6 指向结构体类型数据的指针 181
10.6.1 指向结构体变量的指针 181
10.6.2 指向结构体数组的指针 181
10.6.3 用结构体变量和指向结构体的指针作为函数参数 181
10.7 用指针处理链表 181
10.7.1 链表概述 181
10.7.2 处理动态链表所需的函数 181
10.7.3 链表的建立、输出、插入和删除 182
10.8 共用体 182
10.8.1 共用体的概念 182
10.8.2 共用体变量的引用方式 183
10.8.3 共用体类型数据的特点 183
10.9 枚举类型 183
10.10 用typedef定义类型 184
三、实验环节 184
四、测试练习 186
习题10 186
习题10参考答案 194
第11章 位运算 199
一、知识体系 199
二、学习纲要 199
11.1 位运算符与位运算 199
11.1.1 按位与运算符 200
11.1.2 按位或运算符 200
11.1.3 按位异或运算符 200
11.1.4 按位取反运算符 200
11.1.5 左移运算符 200
11.1.6 右移运算符 200
11.1.7 位运算赋值运算符 201
11.1.8 不同长度的数据进行位运算 201
11.2 位段 201
三、实验环节 201
四、测试练习 202
习题11 202
习题11参考答案 208
第12章 文件 212
一、知识体系 212
二、学习纲要 212
12.1 文件的概念 212
12.2 文件操作函数 213
12.2.1 文件的打开 213
12.2.2 文件的关闭 213
12.3 常用的读写函数 213
12.3.1 读写字符函数 214
12.3.2 读写字符串函数 214
12.3.3 读写数据块函数 214
12.3.4 格式化读写函数fprintf函数和fscanf函数 215
12.4 文件的定位 215
12.4.1 rewind函数 215
12.4.2 随机读写和fseek函数 215
12.4.3 ftell函数 215
12.5 ferror函数 215
12.6 clearerr函数 216
三、实验环节 216
四、测试练习 218
习题12 218
习题12参考答案 225
参考文献 229
附录A Turbo C编译出错信息 230