第1章 程序设计和C语言 1
1.1 程序与程序设计 1
1.1.1 程序和程序设计的概念 1
1.1.2 程序设计语言及其发展 2
1.2 C语言简介 5
1.2.1 C语言的发展 5
1.2.2 C程序的特点 6
1.3 C程序的基本结构 6
1.3.1 简单的C程序 6
1.3.2 C程序的基本组成 9
1.4 C程序的上机步骤和运行环境 10
1.4.1 C程序的上机步骤 10
1.4.2 C程序的运行环境 11
1.5 学生成绩管理系统的基本架构 17
1.6 习题 18
第2章 C语言程序基础 20
2.1 C程序的基本元素 20
2.2 C语言的数据类型 20
2.3 学生成绩管理系统中需使用到的数据类型 24
2.4 常量与变量 25
2.5 运算符和表达式 26
2.5.1 算术运算符和算术表达式 26
2.5.2 赋值运算符和赋值表达式 27
2.5.3 自增、自减运算符 29
2.5.4 逗号运算符和逗号表达式 31
2.6 习题 32
第3章 顺序结构程序设计 34
3.1 C程序的结构 34
3.1.1 C语句概述 34
3.1.2 C程序的3种基本结构 35
3.2 基本语句 35
3.2.1 赋值语句 36
3.2.2 复合语句 36
3.3 数据输出 37
3.3.1 字符数据的输出 37
3.3.2 格式化输出及输出格式控制符 38
3.3.3 学生信息的输出 41
3.4 数据输入 42
3.4.1 字符数据的输入 42
3.4.2 格式化输入及输入格式控制符 43
3.4.3 学生信息的输入 44
3.5 菜单的实现 45
3.6 习题 47
第4章 程序控制 49
4.1 程序控制概述 49
4.2 关系表达式和逻辑表达式 49
4.2.1 关系运算符和关系表达式 49
4.2.2 逻辑运算符和逻辑表达式 50
4.3 分支结构程序设计 52
4.3.1 if语句 52
4.3.2 switch语句 58
4.4 循环结构程序设计 61
4.4.1 while语句 62
4.4.2 do-while语句 64
4.4.3 for语句 66
4.4.4 循环的嵌套 72
4.5 控制转移 74
4.5.1 break语句 74
4.5.2 continue语句 75
4.5.3 goto语句 76
4.5.4 return语句 77
4.6 学生成绩管理系统程序流程的控制 77
4.6.1 菜单控制 77
4.6.2 输入控制 80
4.7 习题 82
第5章 数组与字符串 84
5.1 数组概述 84
5.2 一维数组 84
5.2.1 一维数组的定义 84
5.2.2 一维数组元素的访问 86
5.3 二维数组 91
5.3.1 二维数组的定义 92
5.3.2 二维数组元素的访问 94
5.4 字符数组及字符串函数 96
5.4.1 字符数组与字符串 96
5.4.2 字符串处理函数 99
5.5 学生数据的输入与输出 105
5.6 习题 108
第6章 模块化程序设计 110
6.1 概述 110
6.2 函数的定义 112
6.3 函数的参数和函数的值 114
6.3.1 形式参数和实际参数 114
6.3.2 函数的返回值 116
6.4 函数的调用 117
6.4.1 函数调用的一般形式 117
6.4.2 函数调用的方式 117
6.4.3 对被调用函数的声明和函数原型 118
6.5 函数的嵌套调用 121
6.6 函数的递归调用 122
6.7 数组作为函数参数 125
6.7.1 数组元素作为函数实参 125
6.7.2 数组名作为函数参数 126
6.7.3 多维数组名作为函数参数 130
6.8 局部变量和全局变量 133
6.8.1 局部变量 133
6.8.2 全局变量 134
6.9 变量的存储类别 137
6.9.1 动态存储方式与静态存储方式 137
6.9.2 auto变量 137
6.9.3 用static声明局部变量 138
6.9.4 register变量 139
6.9.5 用extern声明外部变量 140
6.9.6 用static声明外部变量 141
6.10 内部函数和外部函数 142
6.10.1 内部函数 142
6.10.2 外部函数 142
6.11 习题 144
第7章 指针 147
7.1 指针的概念 147
7.1.1 指针和变量的地址 147
7.1.2 指针变量的定义 148
7.1.3 指针变量的引用 148
7.1.4 指针类型与实际存储的匹配 150
7.2 指针变量的运算 151
7.3 指针与数组 153
7.3.1 指向数组元素的指针 154
7.3.2 通过指针引用数组元素 154
7.3.3 指针与多维数组 157
7.4 指针与字符串 161
7.4.1 字符指针的概念与定义 161
7.4.2 字符指针与字符数组 161
7.5 指针数组 164
7.6 指向指针的指针 166
7.7 指针与函数 168
7.7.1 指针变量作函数参数 168
7.7.2 数组名作函数参数 170
7.7.3 返回指针的函数 171
7.7.4 指向函数的指针 173
7.8 习题 176
第8章 构造数据类型 178
8.1 学生批量数据的管理 178
8.2 结构体 178
8.2.1 结构体类型的定义 178
8.2.2 结构体变量的定义 179
8.2.3 结构体变量的引用 182
8.2.4 结构体数组 185
8.2.5 结构体指针 187
8.2.6 结构体作函数的参数 190
8.3 使用结构体类型指针处理链表 194
8.3.1 链表概述 194
8.3.2 简单链表 195
8.3.3 动态链表 197
8.4 共用体 206
8.4.1 共用体类型的定义 206
8.4.2 共用体变量的定义 207
8.4.3 共用体变量的引用 208
8.5 枚举 212
8.5.1 枚举类型的定义 213
8.5.2 枚举类型变量的定义 213
8.6 用typedef定义类型新标识 214
8.7 习题 216
第9章 位运算 218
9.1 位运算与位运算符 218
9.1.1 按位“与”运算 219
9.1.2 按位“或”运算 221
9.1.3 按位“异或”运算 222
9.1.4 按位“取反”运算 224
9.1.5 左移运算符 224
9.1.6 右移运算符 224
9.1.7 不同长度的数据进行位运算 225
9.1.8 位运算综合举例 226
9.2 .1 位域 230
9.2.1 位域概述 231
9.2.2 位域的定义与访问 231
9.3 习题 235
第10章 文件 236
10.1 文件概述 236
10.1.1 文件的基础知识 236
10.1.2 C语言中的文件 236
10.1.3 缓冲式输入输出 238
10.2 文件的打开和关闭 239
10.2.1 文件指针 239
10.2.2 文件的打开(fopen函数) 240
10.2.3 文件的关闭(fclose函数) 241
10.2.4 判断文件是否结束(feof函数) 242
10.3 文件的读写 242
10.3.1 字符的输入和输出 242
10.3.2 字符串的输入和输出 244
10.3.3 格式化输入和输出 245
10.3.4 数据块的输入和输出 250
10.4 文件的随机读写 252
10.4.1 fseek函数 253
10.4.2 rewind函数 253
10.4.3 ftell函数 254
10.5 学生成绩管理系统的实现 254
10.6 习题 266
附录 268
附录A 常用字符与ASCⅡ代码对照表 268
附录B C语言中的关键字 269
附录C 运算符的优先级与结合性 269
附录D 部分常用标准函数 270
参考文献 275