21世纪高等学校计算机基础实用规划教材 C程序设计基础 第2版
作者: 王珊珊,臧洌,张志航,皮德常编著
出版时间:2019年版
丛编项: 21世纪高等学校计算机基础实用规划教材
内容简介
本书全面介绍标准C语言的相关知识,内容包括:C语言概述,基本数据类型、运算符和表达式,标准设备的输入输出,C语言的流程控制,函数,编译预处理,数组,结构体、共用体和枚举类型,指针,链表及其算法,数据文件的使用等。 本书力求概念严谨,同时做到深入浅出、通俗易懂;通过大量的例题和习题帮助程序设计初学者掌握必需的基本语法和常用算法。 本书适合作为高等学校计算机专业和非计算机的理工科各专业的程序设计基础课程教材,也可以作为广大计算机爱好者的自学教材。
目录
目录
第1章 C语言概述 1
1.1 计算机语言与程序 1
1.1.1 机器语言与程序 1
1.1.2 汇编语言与程序 1
1.1.3 高级语言与程序 2
1.2 C语言的发展及其特点 3
1.3 简单的C程序 4
1.4 程序开发的步骤 6
习题1 7
第2章 数据类型、运算符和表达式 8
2.1 保留字和标识符 8
2.1.1 保留字 8
2.1.2 标识符 8
2.2 C语言的基本数据类型 9
2.3 常量和变量 10
2.3.1 常量 10
2.3.2 符号常量 13
2.3.3 变量 14
2.4 基本运算符和表达式 15
2.4.1 C语言运算符及表达式简介 15
2.4.2 算术运算符和算术表达式 16
2.4.3 运算符的优先级和结合性 16
2.4.4 关系运算符和关系表达式 16
2.4.5 逻辑运算符和逻辑表达式 17
2.4.6 位运算符和位运算表达式 18
2.4.7 自增、自减运算符和表达式 21
2.4.8 赋值运算符和赋值表达式 21
2.4.9 逗号运算符和逗号表达式 22
2.4.10 sizeof()运算符和表达式 23
2.4.11 逻辑表达式运算优化的副作用 23
2.5 类型转换 23
2.5.1 赋值时的自动类型转换 23
2.5.2 各种类型运算量混合运算时的自动类型转换 26
2.5.3 强制类型转换 26
习题2 27
第3章 标准设备的输入输出 29
3.1 输入输出的基本概念 29
3.2 格式化输入输出函数的使用 29
3.2.1 格式化输出函数printf() 29
3.2.2 格式化输入函数scanf() 35
3.3 字符输入输出函数的使用 40
3.4 顺序结构程序设计举例 41
习题3 43
第4章 C语言的流程控制 47
4.1 算法概述 47
4.1.1 算法及其效率 47
4.1.2 算法的设计原则 48
4.1.3 算法的表示工具 49
4.1.4 结构化程序设计中基本结构的表示 51
4.2 C程序的结构和语句概述 53
4.3 选择结构语句 55
4.3.1 if语句 55
4.3.2 if语句的嵌套使用 59
4.3.3 条件运算符 61
4.3.4 switch语句 62
4.4 循环结构语句 67
4.4.1 goto语句及标号的使用 67
4.4.2 while语句 68
4.4.3 for语句 69
4.4.4 do-while语句 71
4.4.5 break语句和continue语句 72
4.4.6 循环的嵌套 74
4.5 控制语句应用举例 75
习题4 84
第5章 函数 86
5.1 函数概述 86
5.2 函数的定义与调用 87
5.2.1 函数的定义 87
5.2.2 函数的调用 89
5.2.3 函数的参数 91
5.3 函数的原型声明 92
5.4 函数的嵌套调用和递归调用 94
5.4.1 函数的嵌套调用 94
5.4.2 函数的递归调用 99
5.5 使用C系统函数 103
5.6 作用域和存储类别 106
5.6.1 作用域 106
5.6.2 存储类别 109
5.6.3 全局变量的作用域的扩展和限制 113
5.7 程序的多文件组织 116
5.7.1 内部函数和外部函数 116
5.7.2 多文件组织的编译和连接 118
习题5 118
第6章 编译预处理 121
6.1 宏定义 121
6.1.1 不带参数的宏定义 121
6.1.2 带参数的宏定义 123
6.2 文件包含 126
*6.3 条件编译 127
习题6 130
第7章 数组 132
7.1 数组的定义及应用 132
7.1.1 一维数组的定义及使用 132
7.1.2 一维数组作函数参数 136
7.1.3 多维数组的定义及使用 148
7.1.4 二维数组作函数参数 151
7.2 字符数组的定义及应用 157
7.2.1 字符数组的定义 158
7.2.2 字符数组的初始化 158
7.2.3 字符数组的使用 159
7.2.4 字符串和字符串结束标志 160
7.2.5 字符数组的输入输出 161
7.2.6 字符串处理函数 163
7.2.7 字符数组应用举例 167
习题7 170
第8章 结构体、共用体和枚举类型 172
8.1 结构体的定义及应用 172
8.1.1 结构体类型的定义 172
8.1.2 结构体类型变量的定义 173
8.1.3 结构体类型变量及其成员的引用 175
8.1.4 结构体数组 178
8.2 共用体的定义及应用 181
8.2.1 共用体类型及其变量的定义 181
8.2.2 共用体类型变量的引用 182
8.2.3 共用体类型数据的特点 183
8.3 枚举类型 185
8.3.1 枚举类型的定义 185
8.3.2 枚举类型变量的定义 185
8.3.3 枚举类型变量的使用 185
8.4 用typedef定义类型 189
习题8 191
第9章 指针 193
9.1 指针和指针变量 193
9.1.1 指针的概念 193
9.1.2 指针变量的定义 193
9.1.3 与指针有关的运算符&和* 194
9.1.4 指针变量赋值 194
9.1.5 直接访问和间接访问 194
9.1.6 地址值的输出 198
9.2 指针作函数参数 198
9.2.1 基本类型量作函数参数 199
9.2.2 指针变量作函数参数 200
9.3 指针和指向数组的指针 202
9.3.1 指针和一维数组 202
9.3.2 一维数组元素指针作函数参数 206
9.3.3 指针和字符串 211
9.3.4 二维数组与指针 216
9.3.5 获得函数处理结果的几种方法 222
9.4 指针数组 224
9.4.1 指针数组的定义和使用 224
9.4.2 使用指针数组处理二维数组 225
9.4.3 利用字符指针数组处理字符串 227
9.4.4 main()函数的参数 229
9.5 指向指针的指针 231
9.6 指针和函数 232
9.6.1 函数指针 232
9.6.2 返回指针的函数(指针函数) 236
9.7 指针小结 237
习题9 240
第10章 链表及其算法 243
10.1 存储空间的动态分配和释放 243
10.2 结构体及指针 245
10.3 链表及算法 247
10.3.1 链表概念的引入 247
10.3.2 不带头结点的链表的常用算法 249
*10.3.3 带头结点的链表的常用算法 257
习题10 263
第11章 数据文件的使用 265
11.1 输入输出概述 265
11.2 文件的基本概念和分类 265
11.3 缓冲的概念 266
11.4 文件的读写过程 267
11.4.1 文件和数据流 267
11.4.2 文件类型指针 267
11.4.3 文件的打开与关闭 268
11.5 文件的读写 270
11.5.1 fgetc函数、fputc函数和feof函数 271
11.5.2 fgets函数和fputs函数 274
11.5.3 fscanf函数和fprintf函数 279
11.5.4 fread函数和fwrite函数 281
11.5.5 getw函数和putw函数 284
11.6 文件的随机读写 285
11.6.1 文件读写位置指针的定位 285
11.6.2 文件的随机读写 287
11.7 文件的出错检测 290
*11.8 输入输出重定向 291
*11.9 通过命令行参数指定待读写的文件名 293
习题11 294
附录A ASCII码表 297
附录B 常用库函数 298
参考文献 304