第1章 概述 1
1.1 程序设计的基本概念 1
1.1.1 程序 1
1.1.2 程序设计 1
1.1.3 程序设计语言 1
1.2 C语言简介 3
1.2.1 C语言的产生及发展 3
1.2.2 C语言的特点 3
1.2.3 C程序组成及书写格式 4
1.2.4 C程序上机过程 5
习题 6
本章小结 6
上机实验 7
第2章 数据类型、运算符与表达式 8
2.1 关键字与标志符 8
2.1.1 关键字 8
2.1.2 标志符 8
2.2 数据类型 9
2.2.1 C的数据类型 9
2.2.2 C的基本数据类型 9
2.3 常量 11
2.3.1 整型常量 11
2.3.2 实型常量 12
2.3.3 字符型常量 13
2.3.4 符号常量 15
2.4 变量 16
2.4.1 变量的定义 16
2.4.2 变量的基本操作 16
2.4.3 整型变量 17
2.4.4 实型变量 17
2.4.5 字符变量 17
2.5 运算符与表达式 19
2.5.1 运算符概述 19
2.5.2 算术运算符与算术表达式 19
2.5.3 赋值运算符与赋值表达式 20
2.5.4 表达式中的类型转换 21
习题 23
本章小结 23
2.5.5 逗号运算符与逗号表达式 23
上机实验 26
第3章 基本结构程序设计 27
3.1 算法 27
3.1.1 算法概念 27
3.1.2 算法的描述 28
3.2 顺序结构 32
3.2.1 语句 32
3.2.2 数据的输入输出 34
3.3 选择结构 40
3.3.1 关系运算与逻辑运算 41
3.3.2 if语句 43
3.3.3 switch语句 47
3.4 循环结构 49
3.4.1 while语句 49
3.4.2 do-while语句 50
3.4.3 for语句 52
3.4.4 循环的嵌套 54
3.4.5 break语句与continue语句 55
本章小结 58
习题 58
上机实验 64
4.1.2 数组的概念 65
4.1.1 数组的引入 65
4.1 数组概述 65
第4章 数组 65
4.2 一维数组 66
4.2.1 一维数组的定义 66
4.2.2 一维数组的引用 67
4.2.3 一维数组的初始化 68
4.2.4 一维数组应用举例 69
4.3 二维数组 70
4.3.1 二维数组的定义 70
4.3.2 二维数组的引用 71
4.3.3 二维数组的初始化 72
4.3.4 二维数组应用举例 72
4.4.2 字符数组的初始化 74
4.4.1 字符数组的定义 74
4.4 字符数组 74
4.4.3 字符串 75
4.4.4 字符数组的引用 75
4.4.5 字符数组的输入和输出 75
4.4.6 字符串处理函数 77
4.4.7 字符数组应用举例 81
本章小结 81
习题 82
上机实验 85
5.1.1 模块化程序设计的概念 86
5.1.2 函数分类 86
5.1 模块化程序设计与函数 86
第5章 函数与预处理命令 86
5.2 函数的定义与调用 87
5.2.1 函数定义 87
5.2.2 函数调用 89
5.3 函数的嵌套与递归 95
5.3.1 函数的嵌套调用 95
5.3.2 函数的递归 96
5.4 数组作为函数参数 98
5.4.1 数组元素作函数实参 98
5.4.2 数组名作函数参数 99
5.5 变量的作用域 100
5.5.1 局部变量 100
5.5.2 全局变量 102
5.6.1 静态存储变量 104
5.6 静态存储变量与动态存储变量 104
5.6.2 动态存储变量 105
5.7 预处理命令 108
5.7.1 宏定义 108
5.7.2 文件包含 115
本章小结 116
习题 116
上机实验 120
第6章 指针 122
6.1 地址和指针的概念 122
6.2.2 指针变量的使用 123
6.2.1 指针变量的定义 123
6.2 指针变量的定义与使用 123
6.3 指针与函数 126
6.3.1 指针作函数的参数 126
6.3.2 返回值为指针的函数 127
6.3.3 指向函数的指针 128
6.4 指针与数组 130
6.4.1 指向一维数组的指针 130
6.4.2 指向多维数组的指针 138
6.4.3 指针与字符串 142
6.4.4 指针数组和指向指针的指针 145
本章小结 150
习题 150
上机实验 153
7.1 结构体概述 154
7.1.1 结构体的引入 154
7.1.2 结构体类型的定义 154
第7章 结构体与共用体 154
7.2 结构体变量 156
7.2.1 结构体变量的定义 156
7.2.2 结构体变量的引用 158
7.2.3 结构体变量的初始化 160
7.2.4 结构体变量作函数参数 160
7.3.2 结构体数组的初始化 162
7.3.3 结构体数组元素的引用 162
7.3.1 结构体数组的定义 162
7.3 结构体数组 162
7.3.4 结构体数组应用举例 163
7.4 结构体与指针 164
7.4.1 指向结构体变量的指针 164
7.4.2 链表 166
7.4.3 指向结构体数组的指针 172
7.4.4 用指向结构体的指针作函数参数 173
7.5 共用体 174
7.5.1 共用体类型的定义 174
7.5.2 共用体变量的定义 175
7.5.3 共用体变量的引用 176
7.6 枚举类型 176
7.7 用typedef定义类型 178
习题 179
本章小结 179
上机实验 183
第8章 位运算与位段 184
8.1 位运算 184
8.1.1 按位与运算 184
8.1.2 按位或运算 185
8.1.3 按位异或运算 185
8.1.4 求反运算 185
8.1.5 左移运算 185
8.1.6 右移运算 185
8.1.7 位运算赋值运算符 186
8.2 位段 186
习题 187
本章小结 187
上机实验 188
第9章 文件 189
9.1 文件概述 189
9.1.1 文件的定义 189
9.1.2 文件的分类 189
9.2 文件指针 191
9.3 文件的打开与关闭 191
9.3.1 文件打开函数(fopen) 191
9.3.2 文件关闭函数(fclose) 193
9.4 文件的读写 193
9.4.1 字符读写函数fgetc和fputc 193
9.4.2 字符串读写函数fgets和fputs 197
9.4.3 数据块读写函数fread和fwrite 198
9.4.4 格式化读写函数fscanf和fprinf 200
9.5 文件的定位 202
9.5.1 fseek函数 202
9.5.2 rewind函数 203
9.5.3 ftell函数 204
9.6 文件检测函数 205
9.6.1 feof函数 205
9.6.2 ferror函数 205
9.6.3 clearerr函数 205
本章小结 205
习题 205
上机实验 207
10.2 电子通信录 208
10.2.1 设计目的 208
第10章 课程设计 208
10.1 课程设计的步骤 208
10.2.2 设计要求 209
10.2.3 算法分析 210
10.3 学生成绩管理系统 211
10.3.1 设计目的 211
10.3.2 设计要求 211
10.3.3 算法分析 214
附录 217
附录A 常用字符与ASCII代码对照表 217
附录B 运算符的优先级和结合性 218
习题参考答案和上机实验参考源程序 219