第1章 计算机基础知识 1
1.1计算机系统与工作原理 1
1.1.1计算机系统的组成 1
1.1.2计算机硬件系统 1
1.1.3计算机软件系统 3
1.2数制与编码 6
1.2.1数制的基本概念 6
1.2.2常用的数制 6
1.2.3数制间的转换 10
1.2.4数在计算机中的表示方式 12
1.2.5字符编码 14
1.2.6存储单位 16
1.3计算机程序 18
1.3.1程序的概念 18
1.3.2寄存器 18
1.3.3程序的执行过程 19
1.4习题 21
第2章C语言概述 24
2.1 C语言的发展历史 24
2.2 C语言的特点 25
2.3 C语言程序设计初步 26
2.3.1简单的C程序例子 26
2.3.2 C程序结构 28
2.4 C程序在计算机上的执行步骤 29
2.5习题 30
第3章 基本数据类型与常用库函数 32
3.1字符集与标识符 32
3.2数据类型与基本数据类型 33
3.2.1数据类型 33
3.2.2基本数据类型 34
3.3常量与变量 35
3.3.1常量 35
3.3.2符号常量 37
3.3.3变量 38
3.4输入/输出函数 39
3.4.1字符输入输出函数 39
3.4.2格式输出函数printf 40
3.4.3格式输入函数scanf 43
3.5常用库函数 45
3.6习题 46
第4章 运算符和表达式 49
4.1算术运算符和算术表达式 49
4.2自增、自减运算 52
4.3位运算 53
4.4赋值运算 56
4.5关系运算与逻辑运算 58
4.5.1关系运算 58
4.5.2逻辑运算 59
4.6条件表达式与逗号表达式 60
4.6.1条件表达式 60
4.6.2逗号表达式 62
4.7习题 62
第5章C语言的控制结构 65
5.1算法与程序 65
5.1.1算法 65
5.1.2程序 66
5.2顺序结构 67
5.3选择结构 68
5.3.1 if语句 68
5.3.2 switch语句 73
5.4循环结构 77
5.4.1 while语句 78
5.4.2 do-while语句 79
5.4.3 for语句 80
5.4.4 break语句 83
5.4.5 continue语句 84
5.4.6单重循环程序举例 85
5.4.7多重循环结构 87
5.5习题 89
第6章 数组 93
6.1一维数组 93
6.1.1一维数组的定义 93
6.1.2一维数组的存储形式 94
6.1.3一维数组的初始化 94
6.1.4一维数组的引用 95
6.1.5一维数组的应用举例 95
6.2二维数组 98
6.2.1二维数组的定义 98
6.2.2二维数组的存储形式 99
6.2.3二维数组的初始化 99
6.2.4二维数组的引用 100
6.2.5二维数组应用举例 100
6.3字符数组 102
6.3.1字符数组的定义 102
6.3.2字符数组的初始化 103
6.3.3字符数组的输入和输出 104
6.3.4常用字符串处理函数 105
6.3.5二维字符数组 107
6.3.6字符串应用举例 108
6.4习题 110
第7章 函数 113
7.1函数定义和函数调用 113
7.1.1函数定义 113
7.1.2 return语句 116
7.1.3函数调用 116
7.1.4函数声明 117
7.1.5函数间的参数传递 118
7.2函数的嵌套调用和递归调用 121
7.2.1函数的嵌套调用 121
7.2.2函数的递归调用 122
7.3局部变量和全局变量 125
7.3.1局部变量 125
7.3.2全局变量 126
7.4变量的存储类别 128
7.4.1 auto(自动)变量 129
7.4.2 static(静态变量 129
7.4.3 register(寄存器)变量 130
7.5内部函数和外部函数 131
7.6习题 131
第8章 编译预处理 136
8.1宏定义 136
8.1.1不带参数的宏定义 136
8.1.2带参数的宏定义 137
8.1.3终止宏定义 139
8.2文件包含 139
8.3条件编译 141
8.4习题 142
第9章 指针 145
9.1指针概述 145
9.1.1指针的概念 145
9.1.2指针变量 146
9.1.3指针运算 148
9.1.4指针作为函数的参数 149
9.2指针与一维数组 151
9.2.1一维数组元素的表示 151
9.2.2数组名作为函数的参数 154
9.3指针与二维数组 157
9.3.1二维数组中的指针 157
9.3.2指向二维数组元素的指针变量 158
9.3.3二维数组的行指针作函数参数 161
9.4指针与字符串 163
9.4.1字符串的表示形式 163
9.4.2字符串指针作函数参数 164
9.5指针与函数 166
9.5.1指向函数的指针 166
9.5.2返回指针的函数 166
9.6指针数组与多级指针 168
9.6.1指针数组的概念 168
9.6.2多级指针的概念 169
9.7习题 170
第10章 结构体与共用体 175
10.1结构体类型的定义 175
10.2结构体类型变量 176
10.2.1结构体类型变量的定义 176
10.2.2结构体变量的引用 178
10.3结构体数组 180
10.3.1结构体数组的定义与初始化 180
10.3.2结构体数组的引用 181
10.4结构体和指针 182
10.5结构体和函数 183
10.5.1结构体作函数参数 184
10.5.2返回结构体的函数 186
10.6链表 188
10.6.1简单链表 188
10.6.2处理动态链表所需的库函数 190
10.6.3单向链表的基本操作 191
10.7共用体 199
10.8枚举 201
10.9用typedef定义类型 202
10.10习题 204
第11章 文件 208
11.1文件的基本概念 208
11.2文件的打开与关闭 209
11.2.1文件类型指针 209
11.2.2文件的打开 209
11.2.3文件的关闭 211
11.3文件的读写 211
11.3.1字符读写函数fgetc和fputc 211
11.3.2字符串读写函数fgets和fputs 213
11.3.3数据块读写函数fread和fwrite 214
11.3.4格式化读写函数fscanf和fprintf 216
11.4文件的随机读写 217
11.4.1文件定位 218
11.4.2文件的随机读写 218
11.5综合应用实例——学生成绩管理程序 219
11.6习题 234
第12章 数据结构与算法 236
12.1算法 236
12.1.1算法的基本概念 236
12.1.2算法的复杂度 241
12.2数据结构的基本概念 242
12.2.1什么是数据结构 242
12.2.2数据结构的图形表示 244
12.2.3线性结构与非线性结构 245
12.3线性表及其顺序存储结构 246
12.3.1线性表的基本概念 246
12.3.2线性表的顺序存储结构 246
12.3.3顺序表的插入运算 247
12.3.4顺序表的删除运算 248
12.4栈和队列 249
12.4.1栈及其基本运算 249
12.4.2队列及其基本运算 251
12.5线性链表 254
12.5.1线性链表的基本概念 254
12.5.2线性链表的基本运算 256
12.5.3循环链表 258
12.6树与二叉树 258
12.6.1树的基本概念 258
12.6.2二叉树及其基本运算 260
12.6.3二叉树的存储结构 262
12.6.4二叉树的遍历 263
12.7查找技术 264
12.7.1顺序查找 265
12.7.2二分法查找 265
12.8排序技术 265
12.8.1交换类排序法 266
12.8.2插入类排序法 268
12.8.3选择类排序法 269
12.9习题 271
第13章 软件工程基础 275
13.1软件工程的基本概念 275
13.1.1软件危机与软件工程 275
13.1.2软件工程的目标与原则 276
13.1.3软件的定义与软件的特点 278
13.1.4软件的生命周期 279
13.1.5软件开发工具与软件开发环境 280
13.2软件需求分析 281
13.2.1需求分析与需求分析方法 281
13.2.2结构化分析方法 281
13.2.3软件需求规格说明书 285
13.3软件设计 287
13.3.1软件设计的基本概念 287
13.3.2概要设计 289
13.3详细设计 293
13.4程序设计基础 296
13.4.1程序设计方法与风格 296
13.4.2结构化程序设计 298
13.4.3面向对象程序设计 298
13.5软件测试 300
13.5.1软件测试的目的 300
13.5.2软件测试的准则 300
13.5.3软件测试技术与方法 301
13.5.4软件测试的实施 302
13.6程序的调试 304
13.6.1基本概念 304
13.6.2软件调试方法 305
13.7习题 306
第14章 数据库基础 309
14.1数据库系统的基本概念 309
14.1.1数据、数据库、数据库管理系统 309
14.1.2数据库系统的发展 312
14.1.3数据库系统的主要特点 313
14.1.4数据库的体系结构 314
14.2数据模型 316
14.2.1数据模型的基本概念 316
14.2.2 E-R模型 316
14.2.3层次模型 320
14.2.4网状模型 321
14.2.5关系模型 321
14.3关系代数 324
14.3.1关系模型的基本操作 324
14.3.2关系模型的基本运算 324
14.3.3关系代数中的扩充运算 326
14.4数据库设计 329
14.4.1数据库设计概述 329
14.4.2数据库设计的需求分析 329
14.4.3数据库概念设计 330
14.4.4数据库的逻辑设计 332
14.4.5数据库的物理设计 333
14.4.6数据库的建立与维护 334
14.5习题 335
附录A C语言中的关键字 339
附录B 字符与ASCII码对照表 340
附录C运算符的优先级与结合性 341
附录D常用库函数 342
参考文献 348