本书以C语言为工具,力图用最简明的语言、最典型的实例,介绍计算思维和程序设计的基本方法,把它们的核心思想贯穿于C语言的介绍中,目的是使读者在学习C语言以后,能够用计算思维和程序设计的方法解决相关领域中的实际问题。本书分13章,内容包括:C语言基本概念,数据类型与表达式,格式化输入与输出,选择结构,循环结构,函数,数组,指针,字符串,指针与数组,自定义数据类型,文件,构建大规模程序。每单后均有习题,扫描第1~12章后的二维码,可以获取本章知识点小结和本章常见错误小结。本书免费提供电子课件,登录华信教育资源网(www.hxedu.com.cn)注册后下载。本书假设读者没有任何编程背景,既可以是学生及计算机用户,也可以是有经验的但不熟悉C语言、需要掌握结构化程序设计方法的程序员。
曾智勇,博士,福建师范大学数学与信息学院副教授,数字福建大数据安全技术研究所副所长,中国人工智能学会科普委员会委员,教育部示范性软件学院数字媒体技术专业规范研制专家组专家,中国计算机学会高级会员,中国图象图形学会高级会员,福建省科技厅专家,福州市科技局专家。主要从事计算机视觉、模式识别与人工智能方向的研究。先后主持或参与承担了"中国电子政务应用示范工程”863科技攻关项目,"十五”军用高科技扫描输入技术"总装备部军事预研项目,"医疗CT图像三维建模系统”,"支持采编播一体化的多通道收录系统关键技术研究与应用”福建省省科技厅高校产学合作重大项目,"基于计算机视觉的疲劳驾驶检测系统研制”福建省科技重点课题;"图像语义的形式化分析与验证”,"基于区域语义和相关反馈的多媒体检索系统设计”,<<基于区域语义和相关反馈的图像检索系统的设计与实现>>多项福建省自然科学基金等科研攻关项目,在国内外核心期刊及国际会议上发表学术论文40多篇,其中被SCI或EI收录20余篇。主持或参与福建省级精品在线课程"C语言程序设计”,福建省精品课程"C及面向对象程序设计”,福建师范大学"金课”。
第1章 C语言基本概念 1
1.1 计算机语言和程序 1
1.1.1 计算机语言 1
1.1.2 计算机程序 1
1.1.3 C语言 2
1.1.4 程序设计 2
1.2 算法和算法表示 3
1.2.1 算法的概念 4
1.2.2 算法的特征 5
1.2.3 算法的表示 6
1.2.4 算法的优化 12
1.2.5 结构化程序设计方法 14
1.3 C语言编程 17
1.4 变量、表达式和赋值 19
1.5 从键盘读取输入 20
1.6 常量定义 21
1.7 标识符 23
1.8 C程序的结构特点 24
1.9 C语言编程风格 25
习题1 26
第2章 数据类型与表达式 28
2.1 变量声明与表达式 28
2.2 基本数据类型 28
2.3 整型 29
2.4 浮点型 30
2.5 算术运算符与表达式 31
2.5.1 算术运算符 31
2.5.2 算术表达式 33
2.6 赋值运算符与表达式 34
2.6.1 赋值运算符 34
2.6.2 赋值表达式 34
2.6.3 复合赋值运算符及表达式 35
2.7 自增/自减运算符 36
2.8 字符型 36
2.9 字符处理函数 38
2.10 类型转换 40
2.11 类型定义 42
习题2 43
实验题 46
第3章 格式化输入与输出 47
3.1 输出函数 47
3.2 输入函数 50
习题3 55
实验题 56
第4章 选择结构 57
4.1 关系、等式和逻辑运算符 57
4.2 逻辑运算符和表达式 58
4.3 复合语句 59
4.4 空语句 59
4.5 if语句 59
4.6 if-else语句 61
4.7 if语句的嵌套 62
4.8 级联式语句 66
4.9 switch语句 67
4.10 条件表达式 69
4.11 程序举例与测试 70
4.12 本章扩展内容:位运算 73
4.12.1 位运算符 73
4.12.2 位逻辑运算 73
4.12.3 移位运算 74
4.12.4 复合位运算赋值运算符 75
4.12.5 位运算的应用 75
习题4 76
实验题 81
第5章 循环结构 82
5.1 循环结构与循环语句 82
5.2 计数控制的循环 87
5.3 嵌套循环 89
5.4 条件控制的循环 91
5.5 流程的控制转移 95
5.5.1 break语句 95
5.5.2 continue语句 96
5.5.3 goto语句 98
5.6 应用举例 99
习题5 103
实验题 105
第6章 函数 107
6.1 模块化程序设计 107
6.2 函数的定义 108
6.2.1 函数的分类 108
6.2.2 函数的定义 108
6.3 函数调用 109
6.4 函数原型声明 111
6.5 函数封装与防御性编程 113
6.6 函数设计的基本原则 118
6.7 函数的嵌套调用 119
6.8 函数的递归调用和递归函数 120
6.9 变量的作用域和存储类型 122
6.9.1 变量的作用域 122
6.9.2 变量的存储类型 124
6.10 模块化程序设计实例 128
习题6 132
实验题 135
第7章 数组 136
7.1 一维数组 136
7.2 二维数组 138
7.3 一维数组作为函数参数 140
7.4 排序与查找 144
7.5 二维数组作为函数参数 152
习题7 154
实验题 157
第8章 指针 158
8.1 指针和指针变量 158
8.2 指针变量的定义和初始化 158
8.3 间接寻址运算符 161
8.4 指针变量作为函数参数 163
8.5 指针变量作为函数参数应用举例 166
8.6 函数指针及其应用 171
习题8 174
实验题 176
第9章 字符串 178
9.1 字符串常量 178
9.2 字符串的存储 178
9.3 字符指针 179
9.4 字符串的读/写 180
9.5 字符串处理函数 184
9.6 字符串作为函数参数 186
9.7 从函数返回字符串指针 187
习题9 189
实验题 191
第10章 指针与数组 192
10.1 指针的运算 192
10.2 指针和一维数组的关系 192
10.3 指针和二维数组的关系 197
10.4 指针数组及其应用 201
10.5 动态数组 205
10.5.1 C程序的内存映像 205
10.5.2 动态内存分配函数 206
10.5.3 一维动态数组的内存分配 208
10.5.4 二维动态数组的内存分配 209
习题10 211
实验题 212
第11章 自定义数据类型 214
11.1 用户自定义数据类型和信息隐藏 214
11.2 结构体的定义 214
11.3 结构体变量的初始化 216
11.4 结构体的嵌套 217
11.5 结构体变量的引用 217
11.6 结构体变量在内存中的存储形式 219
11.7 结构体数组的定义和初始化 220
11.8 结构体指针的定义和初始化 223
11.9 结构体作为函数参数 224
11.10 共用体 229
11.11 枚举类型 231
11.12 单向链表 234
11.12.1 问题的提出 234
11.12.2 链表 234
11.12.3 单向链表的创建 235
11.12.4 单向链表的搜索 237
11.12.5 从单向链表中删除节点 238
习题11 242
实验题 244
第12章 文件 246
12.1 文件分类 246
12.2 文件的打开与关闭 247
12.3 顺序读/写文件 248
12.3.1 读/写字符 248
12.3.2 读/写字符串 251
12.3.3 格式化读/写文件 253
12.3.4 读/写数据块 257
12.4 随机读/写文件 260
12.5 标准输入/输出重定向 262
习题12 263
实验题 265
第13章 构建大规模程序 266
13.1 头文件 266
13.1.1 #include指令的使用 266
13.1.2 定义共享类型和宏 266
13.1.3 共享函数原型 267
13.1.4 共享变量声明 268
13.1.5 嵌套包含 268
13.1.6 保护头文件 268
13.1.7 头文件中的#error指令 269
13.2 源文件 269
13.3 多文件程序的设计 269
13.4 构建多文件程序 273
13.4.1 makefile文件 274
13.4.2 链接错误 274
13.4.3 重构程序 275
13.4.4 在程序外定义宏 276
习题13 277
实验题 277
附录A Dev-C++和Visual C++下基本数据类型的取值范围 278
附录B 关键字 278
附录C 运算符的优先级与结合性 279
附录D ASCII字符表 280
附录E ANSI C标准库函数 282
附录F Dev-C++集成开发环境 289
参考文献 292