本书系统地介绍ANSI C语言的基本概念、语法和语义,包括数据类型、常量、变量、运算符和表达式、语句、数组、函数、结构体、指针、文件等。将C语言的介绍和结构化程序设计方法有机地结合在一起,通过大量实例的分析、编程,帮助读者尽快掌握C语言和用C语言编写程序。通过基本算法思想介绍和应用实例,帮助读者掌握用C语言描述算法和基本算法策略在程序设计中的应用。本书提供大量精心设计的例题、习题和上机实验,通过完成习题和上机实验,帮助读者进一步理解C语言的各种语法成分,掌握C语言源程序的编辑、编译、链接和运行过程。本书配有电子课件、源代码和习题解答,读者可登录华信教育资源网(www.hxedu.com.cn)注册并免费下载。 本书可作为高等院校“C语言程序设计”课程的教材,也可作为广大计算机程序设计人员和计算机程序设计爱好者的参考书,同时可供参加相关考试的读者参考。
呼克佑,太原理工大学软件学院教师,主要从事方向为软件工程、数据库应用主编《C语言程序设计》《JAVA语言程序设计》等多部教教材。
目 录
第1章 C语言与程序设计 1
1.1 C语言发展简史 2
1.2 C语言的特点 3
1.3 计算机解题过程 4
1.4 算法及其表示 5
1.4.1 算法的概念 7
1.4.2 算法的描述 8
1.5 常用算法策略介绍 11
1.5.1 穷举法 11
1.5.2 递推法 12
1.5.3 递归法 12
1.6 结构化程序设计方法 13
1.6.1 结构化程序设计基本思想 13
1.6.2 三种基本程序结构 14
本章小结 14
习题一 15
第2章 C语言基础知识 16
2.1 简单的C语言程序 16
2.2 关键字和标识符 19
2.2.1 字符集 19
2.2.2 关键字 19
2.2.3 标识符 20
2.3 数据类型 20
2.3.1 C语言的数据类型 21
2.3.2 整数类型 22
2.3.3 浮点类型 23
2.3.4 字符类型 24
2.4 常量和变量 25
2.4.1 常量 25
2.4.2 变量 27
2.5 运算符和表达式 29
2.5.1 算术运算符 30
2.5.2 赋值运算符 32
2.5.3 其他运算符 34
2.5.4 运算符的优先级和结合性 36
2.6 数据类型转换 37
本章小结 39
习题二 39
第3章 程序控制结构 42
3.1 C语言语句概述 42
3.2 顺序结构 44
3.2.1 赋值语句 44
3.2.2 数据输入/输出 44
3.2.3 格式输入/输出 46
3.2.4 程序举例 51
3.3 选择结构 52
3.3.1 关系运算符与关系表达式 53
3.3.2 逻辑运算符与逻辑表达式 53
3.3.3 if语句 55
3.3.4 switch语句 59
3.3.5 程序举例 62
3.4 循环结构 64
3.4.1 while循环语句 64
3.4.2 do-while循环语句 66
3.4.3 for循环语句 67
3.4.4 循环的嵌套 70
3.4.5 goto、break和continue语句 71
3.4.6 程序举例 74
本章小结 79
习题三 80
第4章 数组和字符串 94
4.1 一维数组 94
4.1.1 一维数组的定义 94
4.1.2 一维数组的初始化 95
4.1.3 一维数组元素的引用 96
4.1.4 一维数组应用举例 98
4.2 二维数组及多维数组 103
4.2.1 二维数组的定义 103
4.2.2 二维数组的初始化 104
4.2.3 二维数组元素的引用 104
4.2.4 二维数组应用举例 105
4.2.5 多维数组 106
4.3 字符数组和字符串 107
4.3.1 用字符数组存放字符序列 107
4.3.2 用字符数组存放字符串 108
4.3.3 字符串处理函数 110
4.3.4 字符数组应用举例 113
本章小结 116
习题四 117
第5章 指针 123
5.1 指针的概念及运算 123
5.1.1 指针的概念 123
5.1.2 指针变量的定义和初始化 124
5.1.3 与指针有关的运算 125
5.2 数组中的指针 128
5.2.1 一维数组中的指针 128
5.2.2 二维数组中的指针 131
5.3 用指针处理字符串 133
5.4 指针数组和指针的指针 135
5.4.1 指针数组 135
5.4.2 指向指针的指针 137
5.5 程序举例 139
本章小结 140
习题五 141
第6章 函数 145
6.1 模块化程序设计方法 145
6.2 函数的定义、调用和声明 147
6.2.1 函数定义 147
6.2.2 函数调用 150
6.2.3 函数声明 151
6.3 函数参数及其传递方式 153
6.3.1 函数的参数 153
6.3.2 函数参数的传递方式 155
6.4 函数的嵌套调用和递归调用 161
6.4.1 函数的嵌套调用 161
6.4.2 函数的递归调用 164
6.5 函数指针和指向函数的指针变量 167
6.5.1 函数指针和指向函数的指针变量的定义 167
6.5.2 指向函数的指针作为函数的参数 168
6.6 main()函数的参数 170
6.7 exit()函数 172
6.8 变量的作用域规则与存储类别 172
6.8.1 局部变量和全局变量 173
6.8.2 变量的存储类别 176
6.8.3 内部函数和外部函数 181
6.9 程序举例 183
本章小结 186
习题六 187
第7章 用户自定义类型 193
7.1 结构体 193
7.1.1 结构体类型定义 193
7.1.2 结构体类型变量、数组和指针的定义 195
7.1.3 结构体类型变量、数组和指针的初始化 197
7.1.4 结构体类型变量的引用 198
7.1.5 结构体应用举例 200
7.1.6 结构体指针与函数 204
7.1.7 位域 206
7.2 动态存储分配 207
7.2.1 内存的分配与释放 208
7.2.2 内存动态分配应用举例 210
7.3 共用体 216
7.3.1 共用体类型的定义 217
7.3.2 共用体变量定义 217
7.4 枚举类型 219
7.4.1 枚举类型的定义 219
7.4.2 枚举类型数据的使用 220
7.5 类型标识符的定义 221
本章小结 221
习题七 222
第8章 文件 225
8.1 文件概述 225
8.1.1 文件的基本概念 225
8.1.2 文件类型和常用函数 226
8.1.3 文件类型指针 227
8.2 文件的打开与关闭 228
8.2.1 文件的打开 228
8.2.2 文件的关闭 229
8.3 文件的读/写 229
8.3.1 顺序文件的读/写 230
8.3.2 随机文件的读/写 236
8.4 程序举例 239
本章小结 242
习题八 243
第9章 编译预处理 245
9.1 宏定义 245
9.1.1 不带参数的宏定义 246
9.1.2 带参数的宏定义 248
9.2 文件包含 251
9.3 条件编译 253
本章小结 255
习题九 256
第10章 上机实验 258
实验一 C语言程序的运行环境和运行过程 259
实验二 简单程序设计 263
实验三 分支结构和循环结构程序设计(1) 263
实验四 分支结构和循环结构程序设计(2) 264
实验五 数组应用和字符串处理程序设计 265
实验六 指针应用程序设计 266
实验七 模块化程序设计 266
实验八 结构体应用和文件操作程序设计 267
附录A ASCII码字符表 269
附录B C语言运算符 270
附录C 位运算 271
附录D 常用的C库函数 273
附录E 实验报告 279
附录F Visual C++常见错误 280
参考文献 284