第1章 软件工程概述及程序设计基础 1
1.1 基本概念 1
1.2 软件设计与软件工程概述 3
1.2.1 软件设计概述 3
1.2.2 软件工程概述 4
1.3 程序编写步骤及程序设计语言 7
1.3.1 程序编写步骤 7
1.3.2 常见程序设计语言简介 8
1.4 程序设计方法 9
1.4.1 结构化程序设计 9
1.4.2 面向对象程序设计 10
1.5 算法与数据结构 11
1.5.1 算法的特征 11
1.5.2 算法设计的表示方法和结构化程序设计基本结构 12
1.5.3 常用算法的简介 15
习题一 16
第2章 C语言概述 19
2.1 C语言的历史与特点 19
2.1.1 C语言的特点 20
2.1.2 C语言字符集和词汇 20
2.2 C语言的格式与简单的C程序介绍 21
2.2.1 最简单的C程序 21
2.2.2 书写程序时应遵循的规则 25
2.3 C语言程序的开发与运行 26
2.3.1 C语言程序的开发过程 26
2.3.2 Visual C++6.0的安装 26
2.3.3 Visual C++6.0上机使用步骤 28
习题二 39
第3章 数据类型及表达式 41
3.1 标识符 41
3.2 数据类型 42
3.3 常量 42
3.4 变量 43
3.5 整型数据 44
3.5.1 整型常量 44
3.5.2 整型变量 44
3.6 浮点型数据 45
3.6.1 浮点型常量 45
3.6.2 浮点型变量 46
3.7 字符型数据 46
3.7.1 字符常量 46
3.7.2 字符串常量 47
3.7.3 字符型变量 47
3.8 变量的初始化 48
3.9 运算符和表达式 48
3.9.1 算术表达式 49
3.9.2 赋值表达式 51
3.9.3 逗号运算符和表达式 52
3.10 数据类型转换 53
3.10.1 隐式转换 53
3.10.2 强制类型转换 55
习题三 56
第4章 语句及程序流程控制 58
4.1 概述 58
4.2 顺序结构程序设计 59
4.2.1 表达式语句 60
4.2.2 复合语句 61
4.2.3 数据的输入和输出 62
4.2.4 应用举例 72
4.3 选择结构程序设计 74
4.3.1 关系运算符和关系表达式 74
4.3.2 逻辑运算符和逻辑表达式 76
4.3.3 条件运算符和条件运算 78
4.3.4 if语句 80
4.3.5 switch语句和break语句 86
4.3.6 几种实现选择结构方法的比较 89
4.3.7 应用举例 89
4.4 循环结构程序设计 94
4.4.1 while语句 95
4.4.2 do-while语句 98
4.4.3 for语句 101
4.4.4 三种循环语句的比较 104
4.4.5 循环的嵌套 106
4.4.6 无条件转移语句及其在循环程序设计中的应用 108
4.4.7 常用算法及应用举例 112
习题四 116
第5章 数组 125
5.1 一维数组 125
5.1.1 一维数组的定义和初始化 125
5.1.2 一维数组的元素引用和地址引用 127
5.1.3 一维数组应用举例 128
5.2 二维数组与多维数组 136
5.2.1 二维数组与多维数组的定义和初始化 136
5.2.2 二维数组的元素引用和地址引用 139
5.2.3 二维数组应用举例 140
5.3 字符数组与字符串 145
5.3.1 字符数组的定义和初始化 145
5.3.2 字符串 146
5.3.3 字符串的输入和输出 149
5.3.4 标准库字符串处理函数 152
5.3.5 字符数组应用举例 158
习题五 161
第6章 函数 167
6.1 函数的定义 168
6.1.1 有参数的函数定义 168
6.1.2 无参数的函数定义 170
6.1.3 空函数 170
6.2 参数传递 170
6.2.1 实际参数和形式参数 170
6.2.2 数组作为参数 172
6.3 函数的返回值 175
6.3.1 无返回值的函数 175
6.3.2 有返回值的函数 176
6.4 函数的调用 177
6.4.1 函数调用的几种方式 177
6.4.2 函数的说明 178
6.4.3 函数的嵌套调用 180
6.4.4 函数的递归调用 182
6.5 变量的作用域 184
6.5.1 程序块 184
6.5.2 局部变量 185
6.5.3 全局变量 186
6.6 变量的存储类别 187
6.6.1 自动变量 187
6.6.2 静态变量 188
6.6.3 寄存器变量 189
6.6.4 外部变量 189
6.7 内部函数和外部函数 191
6.7.1 内部函数 191
6.7.2 外部函数 191
习题六 193
第7章 预处理命令 199
7.1 宏定义 199
7.1.1 无参宏定义 199
7.1.2 带参数的宏定义 202
7.2 文件包含 206
7.3 条件编译 208
习题七 212
第8章 指针 216
8.1 指针概述 216
8.2 指针变量的定义 217
8.3 指针变量的引用 217
8.3.1 取地址运算符 218
8.3.2 指针运算符 219
8.3.3 指针使用举例 221
8.4 指针作为函数参数 222
8.5 指向数组的指针 227
8.5.1 指向数组元素的指针变量 227
8.5.2 利用指针访问数组元素 228
8.5.3 指针变量与动态存储分配 232
8.5.4 数组名及指向数组的指针变量作函数参数 236
8.5.5 指向多维数组的指针 245
8.6 指针运算 250
8.6.1 指针变量的赋值运算 251
8.6.2 指针变量的*运算——间接引用 252
8.6.3 指针的加减运算 253
8.6.4 指针的比较运算 255
8.7 指向字符串的指针 257
8.8 指针与函数 263
8.8.1 指向函数的指针变量 263
8.8.2 返回指针的函数 265
8.9 指针数组与指向指针的指针 267
8.9.1 指针数组 267
8.9.2 指向指针的指针 268
8.9.3 指针数组作main函数的参数 269
习题八 272
第9章 结构体、共用体和枚举类型 283
9.1 结构体的定义与使用 283
9.1.1 结构体类型示例 283
9.1.2 结构体类型的定义 284
9.1.3 结构体类型变量的定义 285
9.1.4 结构体变量的初始化 287
9.1.5 结构体变量的引用 288
9.1.6 结构体的嵌套定义 288
9.1.7 结构体变量应用举例 290
9.2 结构体数组 292
9.2.1 结构体数组的定义 293
9.2.2 结构体数组的初始化 294
9.2.3 结构体数组的引用 295
9.2.4 结构体数组应用举例 296
9.3 指向结构体类型数据的指针 299
9.3.1 指向结构体类型数据的指针变量的定义 299
9.3.2 指向结构体类型数据的指针变量的初始化 299
9.3.3 通过指向结构体变量的指针访问结构体成员 300
9.3.4 指向结构体数组的指针 301
9.3.5 动态存储分配指针所指的空间 301
9.3.6 结构指针举例 306
9.4 结构体和函数 309
9.4.1 结构体作为函数参数和返回值 310
9.4.2 结构体指针作为函数参数和返回值 311
9.5 链表 314
9.5.1 链表概述 314
9.5.2 简单的链表 314
9.5.3 建立动态链表 315
9.5.4 输出链表 317
9.5.5 对链表的插入操作 319
9.5.6 对链表的删除操作 323
9.6 共用体 326
9.6.1 共用体类型的说明和变量的定义 326
9.6.2 共用体变量的引用 327
9.6.3 共用体类型数据的特点 327
9.7 枚举类型 328
9.7.1 枚举类型的定义 328
9.7.2 枚举类型变量的赋值和使用 328
9.8 用typedef定义新的类型名 332
习题九 334
第10章 文件 336
10.1 C文件概述 336
10.2 文件类型指针 338
10.3 文件的打开和关闭 339
10.3.1 文件的打开函数fopen 339
10.3.2 文件的关闭函数fclose 341
10.4 文件的顺序读写 341
10.4.1 字符输入输出函数fgetc和fputc 341
10.4.2 字符串输入输出函数fgets和fputs 345
10.4.3 数据块输入输出函数fread和fwrite 347
10.4.4 格式化输入输出函数fscanf和fprintf 350
10.5 文件的随机读写 352
10.5.1 反绕函数rewind 352
10.5.2 移动文件指针函数fseek 352
10.5.3 测定位置指针当前指向函数ftell 354
10.6 文件的出错检测 354
10.6.1 文件错误标志函数ferror 354
10.6.2 清除标志函数clearerr 355
习题十 355
第一套综合练习题及答案 359
第二套综合练习题及答案 366
第三套综合练习题及答案 376
第四套综合练习题 382
第五套综合练习题 396
第六套综合练习题 403
第七套综合练习题 412
第八套综合练习题 423
第九套综合练习题 433