本书由浅入深、循序渐进地介绍了C语言程序设计的思路和方法,并通过富有趣味性的精彩案例讲解将每章中的知识点融会贯通,同时给出了案例思路分析,提出了案例思考问题,从而提高读者的学习兴趣,培养读者的自主学习能力、独立思考能力和计算思维能力。本书共13章,系统地介绍了基于Visual Studio的C语言程序的开发环境、数据类型、运算符与表达式、基本输入与输出语句、流程控制、模块化程序设计方法、位运算符和位运算、标准文件的输入与输出操作、EasyX图形库和C++语言面向对象基础。 本书内容翔实、案例新颖、结构清晰、重点明确,以丰富有趣的案例驱动知识点教学。本书既可以作为高等院校计算机程序设计课程的教材,也可以作为计算机程序设计培训教材和各种计算机等级考试的参考教材。
李俊,男,河北大学副教授。1995.9-1999.7,河北大学计算机软件专业,大学本科;1999.7-2020.2,河北大学计算机教学部;2007.9-2010.7 河北大学计算机科学学院,硕士研究生;2020.3-至今 河北大学电子信息工程学院,副教授。已出版教材:(1)《ASP动态网页设计》中国铁道出版社 2006-08-01;(2)《Visual Basic程序设计与应用开发教程》人民邮电出版社 2009-10-10;(3)《C语言程序设计教程》机械工业出版社 2015-06-01。主持的项目:(1)科技部重点研发项目《健康养老跨界服务应用示范》子课题《健康养老跨界服务应用示范》负责人。(2)河北省自然科学基金重点项目《冠心病功能学评价中关键问题的研究》第二完成人,主要承担心脏OCT和CT影像分析工作。
第1章 C语言程序设计概述 1
1.1 C语言的发展及特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 2
1.2 C语言程序的基本结构 3
1.3 C语言中的字符集、标识符与关键字 4
1.3.1 C语言中的字符集 4
1.3.2 C语言中的标识符与关键字 5
1.4 C语言程序的开发环境 5
1.4.1 C语言程序的开发过程 6
1.4.2 Microsoft Visual Studio 2010集成开发环境 6
本章小结 12
习题 12
第2章 数据类型、运算符与表达式 14
2.1 C语言中的数据类型 14
2.1.1 数据类型概述 14
2.1.2 整数类型 15
2.1.3 实数类型 16
2.1.4 字符类型 16
2.2 常量与变量 16
2.2.1 常量 16
2.2.2 变量 19
2.3 运算符与表达式 20
2.3.1 算术运算符与算术表达式 21
2.3.2 赋值运算符与赋值表达式 22
2.3.3 关系运算符与关系表达式 23
2.3.4 逻辑运算符与逻辑表达式 25
2.3.5 条件运算符、逗号运算符和求字节数运算符 27
2.4 运算符的优先级 28
2.5 数据类型转换 29
2.5.1 自动类型转换 29
2.5.2 强制类型转换 30
本章小结 31
习题 31
第3章 顺序结构 33
3.1 算法 33
3.1.1 算法的概念 33
3.1.2 算法的组成要素 34
3.1.3 算法的描述 35
3.2 C语言基本语句 36
3.3 数据的输入与输出 38
3.3.1 字符的输入与输出 38
3.3.2 格式化输出函数printf 40
3.3.3 格式化输入函数scanf 44
3.4 精彩案例 46
3.4.1 温度转换 47
3.4.2 进制转换 47
3.4.3 大小写字符转换 47
3.4.4 计算圆的周长和面积 48
3.4.5 人民币兑换美元计算 49
本章小结 49
习题 49
第4章 选择结构 51
4.1 if语句 51
4.1.1 单分支if语句 51
4.1.2 双分支if语句 53
4.1.3 多分支if语句 54
4.1.4 if语句的嵌套 56
4.2 条件表达式 58
4.3 switch语句 59
4.4 精彩案例 61
4.4.1 BMI计算 61
4.4.2 判断闰年 62
4.4.3 模拟计算器 63
本章小结 64
习题 64
第5章 循环结构 66
5.1 循环结构算法 66
5.2 while语句 68
5.3 do...while语句 69
5.4 for语句 71
5.5 break和continue语句 74
5.5.1 break语句 74
5.5.2 continue语句 75
5.6 循环结构的嵌套 76
5.7 精彩案例 77
5.7.1 猴子吃桃 77
5.7.2 整数质因数分解 78
5.7.3 电文加密 78
5.7.4 输出菱形 79
本章小结 81
习题 81
第6章 函数与宏替换 83
6.1 模块化设计 83
6.2 函数的定义与调用 84
6.2.1 函数的定义 84
6.2.2 函数的调用 86
6.2.3 参数的传递 89
6.3 函数的递归调用 90
6.4 变量的作用域与存储类型 93
6.4.1 变量的作用域 94
6.4.2 变量的存储类型 96
6.5 宏替换 100
6.5.1 宏替换 100
6.5.2 文件包含 103
6.6 精彩案例 104
6.6.1 判断回文数 104
6.6.2 判断完数 105
6.6.3 斐波那契数列 106
本章小结 107
习题 107
第7章 数组 110
7.1 概述 110
7.2 一维数组 111
7.2.1 一维数组的定义 111
7.2.2 一维数组的初始化 112
7.2.3 一维数组的引用 113
7.2.4 一维数组的应用 114
7.3 二维数组 118
7.3.1 二维数组的定义 119
7.3.2 二维数组的初始化 119
7.3.3 二维数组的引用 120
7.3.4 二维数组的应用 122
7.4 字符数组与字符串 123
7.4.1 字符数组的定义与初始化 124
7.4.2 字符串的概念及存储 124
7.4.3 字符数组的输入与输出 125
7.4.4 字符串处理函数 127
7.4.5 字符数组的应用 129
7.5 数组作为函数参数 131
7.6 精彩案例 134
7.6.1 身份证号校验 134
7.6.2 字符串连接 136
7.6.3 删除字符 137
7.6.4 统计单词个数 138
本章小结 139
习题 139
第8章 指针 141
8.1 指针与指针变量 141
8.1.1 指针的概念 141
8.1.2 指针变量的定义与初始化 142
8.1.3 指针运算 144
8.2 指针与数组 147
8.2.1 一维数组的指针表示法 147
8.2.2 二维数组的指针表示法 150
8.3 指针与字符串 154
8.3.1 字符串的指针表示方法 154
8.3.2 字符串数组与指针数组 157
8.4 指针与函数 159
8.4.1 指针变量作为函数的形参 159
8.4.2 指针型函数 165
*8.5 指向指针的指针变量 166
8.6 精彩案例 167
8.6.1 数字查找 167
8.6.2 字符串截取 169
8.6.3 字符串查找 170
本章小结 171
习题 172
第9章 结构体、共用体与枚举类型 174
9.1 结构体类型的定义 174
9.2 结构体类型变量 176
9.2.1 结构体类型变量的定义 176
9.2.2 结构体类型变量的使用 177
9.2.3 结构体类型变量的初始化 178
9.3 结构体数组 180
9.3.1 结构体数组的定义 180
9.3.2 结构体数组的初始化 181
9.3.3 结构体数组的使用 181
9.4 结构体类型指针 182
9.4.1 指向结构体类型变量的指针 182
9.4.2 指向结构体数组的指针 184
9.5 结构体与函数 186
9.5.1 结构体类型变量作为函数参数 186
9.5.2 结构体指针变量作为函数参数 187
9.5.3 函数返回值的类型为结构体类型 188
*9.6 链表 189
9.6.1 链表概述 189
9.6.2 内存管理函数 190
9.6.3 链表的基本操作 192
9.7 共用体类型 198
9.7.1 共用体类型与共用体类型变量 198
9.7.2 共用体类型变量的使用 199
9.8 枚举类型 202
9.9 精彩案例 205
9.9.1 链表存储职工信息 205
9.9.2 链表翻转 206
本章小结 208
习题 209
第10章 位运算 210
10.1 位运算符和位运算 210
10.2 位段 212
10.3 综合案例 214
本章小结 217
习题 217
第11章 文件 218
11.1 文件概述 218
11.2 文件的打开与关闭 220
11.2.1 文件指针 220
11.2.2 文件的打开 221
11.2.3 文件的关闭 222
11.3 文件读/写函数 223
11.3.1 读/写字符函数 223
11.3.2 读/写字符串函数 225
11.3.3 格式化读/写函数 227
11.3.4 块读/写函数 228
11.4 文件的定位与随机读/写 230
11.5 文件检测函数 233
11.6 精彩案例 234
11.6.1 文件加密 234
11.6.2 成绩信息管理 235
本章小结 237
习题 238
第12章 EasyX图形库 239
12.1 EasyX图形库安装 239
12.2 基本概念 240
12.2.1 颜色 240
12.2.2 坐标 242
12.2.3 设备 243
12.3 常用库函数 244
12.3.1 设备绘图相关函数 245
12.3.2 颜色转换函数 245
12.3.3 颜色及样式设置函数 246
12.3.4 图形绘制相关函数 249
12.3.5 文字输出相关函数 251
12.3.6 图像处理相关函数 255
12.4 精彩案例 257
12.4.1 模拟动态二维星空 257
12.4.2 绘制动态时钟 259
本章小结 261
习题 262
第13章 C++语言面向对象基础 263
13.1 C++语言简介 263
13.2 类和对象 265
13.2.1 类的定义和对象的声明 265
13.2.2 类的成员函数 267
13.2.3 类的构造函数与析构函数 269
13.2.4 C++类的访问修饰符 272
13.3 继承、重载和多态 275
13.3.1 类的继承 275
13.3.2 重载函数和重载运算符 278
13.3.3 多态 281
13.4 接口 283
13.5 精彩案例 285
13.5.1 计算正方体、球体和圆柱体的表面积与体积 285
13.5.2 学生和教师信息管理 287
本章小结 289
习题 290
附录A ASCII码表 291
附录B C语言运算符优先级和结合方向 292
附录C C语言常见的错误信息 293
附录D C语言常用算法 297
附录E C语言常用库函数 310