本书为适应新工科复合型人才对计算思维和问题求解能力的要求而编写。全书共12章,主要内容包括:计算思维与问题求解,数据类型、运算符和表达式,简单的C程序设计,选择结构程序设计,循环结构程序设计,函数,数组,常用算法,指针,结构体,文件系统和人工智能经典算法。本教材兼顾计算思维与程序设计基础知识,注重问题抽象,通过问题案例分析,逐步给出问题求解算法与程序实现,引导读者的算法思维和程序设计思维。通过“常用算法”和“人工智能经典算法”两章,进一步拓展读者问题求解思维,提高读者解决复杂专业领域问题的能力。
本书适合作为计算机专业和非计算机专业的计算思维课程、程序设计课程的教材,也适合作为高年级本科生、从事人工智能等相关行业的技术人员及广大程序设计爱好者的参考书籍。
所有的程序均在计算机上调试通过。
文字严谨、流畅,例题丰富,文档规范,注重程序设计技能训练。
本书适合作为计算机专业和非计算机专业的计算思维课程、程序设计课程的教材,也适合作为高年级本科生、从事人工智能等相关行业的技术人员及广大程序设计爱好者的参考书籍。
刘杰,现任计算机与信息科学系主任、计算机软件教学团队主任、黑龙江省计算机学会计算机教育与培训专委会委员、中国计算机学会会员等。主持或参与各类科研项目40余项,获省部级科技进步奖七项,发表论文近四十篇,著作三部。在教学研究方面,获省级教学成果一等奖一项、二等奖一项。作为项目负责人主持研发的“高校实验室综合管理系统”,通过省教委主持的鉴定,在多所高校推广应用,并申报国家级教学成果奖。
目 录
第 1章 计算思维与问题求解 1
1.1 计算思维与程序设计 1
1.2 计算机问题求解的灵魂——算法 2
1.2.1 算法及其特性 2
1.2.2 算法表示方法 3
1.3 程序设计中的数据和数据结构 6
1.4 计算机问题求解的步骤 7
1.4.1 求解问题的一般步骤 7
1.4.2 C语言程序开发步骤 9
1.5 C语言程序结构及实例 11
1.5.1 C程序构成 11
1.5.2 C编程风格 12
第 2章 数据类型、运算符和表达式 13
2.1 程序举例 13
2.2 常量与变量 14
2.2.1 常量 14
2.2.2 变量 15
2.3 数据类型的一般概念 15
2.4 整型数据 16
2.4.1 整型变量 16
2.4.2 整型常量 19
2.5 实型数据 19
2.5.1 实型变量 20
2.5.2 实型常量 20
2.6 字符型数据 21
2.6.1 字符型常量 21
2.6.2 字符型变量 22
2.6.3 字符串常量 23
2.7 变量赋初值 24
2.8 不同数据类型数据间的混合运算 24
2.8.1 自动转换 24
2.8.2 强制转换 25
2.9 运算符和表达式 26
2.9.1 概述 26
2.9.2 算术运算符和算术表达式 26
2.9.3 自增、自减运算符 27
2.9.4 赋值运算符和赋值表达式 28
2.9.5 逗号运算符和逗号表达式 29
2.10 习题 30
第3章 简单的C程序设计 32
3.1 赋值语句 32
3.2 数据的输入输出 33
3.2.1 字符数据的输入输出 34
3.2.2 格式输入与格式输出 36
3.3 综合应用实例 46
3.4 智能算法能力拓展 48
3.5 习题 51
第4章 选择结构程序设计 52
4.1 if语句的基本形式 52
4.1.1 if单分支结构 52
4.1.2 if双分支结构 53
4.2 if语句的表达式 55
4.2.1 关系运算符和关系表达式 55
4.2.2 逻辑运算符和逻辑表达式 56
4.2.3 关于if语句条件判断 60
4.3 多分支选择结构 61
4.3.1 if多分支结构 61
4.3.2 switch语句 64
4.4 if语句的嵌套结构及条件表达式概念 68
4.4.1 if嵌套结构 68
4.4.2 条件表达式 71
4.5 综合应用实例 73
4.6 智能算法能力拓展 77
4.7 习题 78
第5章 循环结构程序设计 79
5.1 while循环 79
5.1.1 while循环结构 79
5.1.2 while循环实例解析 79
5.2 for循环 80
5.2.1 for循环结构 80
5.2.2 for循环实例解析 81
5.3 do-while循环 82
5.3.1 do-while循环结构 82
5.3.2 do-while循环实例解析 82
5.4 循环的嵌套 83
5.5 循环结构的讨论 84
5.5.1 while循环、for循环和do-while循环的比较 84
5.5.2 提前终止循环break语句 85
5.5.3 提前结束本次循环continue语句 85
5.6 综合应用实例 86
5.7 习题 89
第6章 数组 92
6.1 成组数据处理问题实例及解决方法 92
6.2 一维数组的定义与引用 93
6.2.1 一维数组的定义 93
6.2.2 一维数组元素的引用 93
6.2.3 一维数组的初始化 93
6.3 二维数组的定义与引用 94
6.3.1 二维数组的定义 94
6.3.2 二维数组元素的引用 95
6.3.3 二维数组的初始化 95
6.4 字符数组的定义与引用 97
6.4.1 字符数组的初始化 97
6.4.2 字符串和字符串结束标志 97
6.4.3 字符数组的输入输出 98
6.4.4 字符串处理函数 98
6.5 综合应用实例 100
6.6 智能算法能力拓展 106
6.7 习题 109
第7章 函数 113
7.1 模块化程序设计与C函数 113
7.2 函数定义和函数说明 114
7.2.1 函数的定义 114
7.2.2 函数的说明 116
7.3 函数的参数和返回值 117
7.3.1 形式参数和实际参数 117
7.3.2 函数的返回值 119
7.4 函数调用 120
7.4.1 函数调用的一般形式 120
7.4.2 函数的嵌套调用 122
7.4.3 函数的递归调用 122
7.5 数组作为函数参数 125
7.5.1 数组元素做函数实参 125
7.5.2 数组名作为函数参数 126
7.6 变量的作用域 128
7.6.1 局部变量 128
7.6.2 全局变量 129
7.7 变量的存储类别 130
7.7.1 自动变量 131
7.7.2 寄存器变量 132
7.7.3 外部变量 132
7.7.4 静态变量 133
7.8 内部函数和外部函数 134
7.8.1 内部函数 134
7.8.2 外部函数 134
7.9 综合应用实例 134
7.10 智能算法能力拓展 138
7.11 习题 140
第8章 常用算法 142
8.1 穷举法 142
8.2 分治法 144
8.3 递推法 145
8.4 递归法 147
8.5 迭代法 148
8.6 贪心算法 149
8.7 回溯法 151
8.8 动态规划算法 153
8.9 智能算法能力拓展 154
第9章 指针 156
9.1 指针的引入 156
9.2 内存数据的访问方式 158
9.3 指针变量的定义及其基本使用 160
9.3.1 指针变量的定义 160
9.3.2 指针变量的基本使用方法 161
9.4 指针作函数的参数 163
9.5 指针变量的各种应用 166
9.5.1 指针与数组 166
9.5.2 指针与字符串 169
9.6 使用指针的算法分析和设计 173
9.6.1 使用指针处理数组 173
9.6.2 使用指针处理字符串 177
9.6.3 使用指针作参数传递一组数据 180
9.7 综合应用实例 185
9.8 习题 191
第 10章 结构体 193
10.1 定义结构体类型 193
10.2 定义结构体类型变量 194
10.3 结构体变量的引用 195
10.4 结构体变量的初始化 196
10.5 结构体数组 197
10.5.1 结构体数组的定义 197
10.5.2 结构体数组的引用 198
10.6 结构体类型的变量作为函数参数 199
10.6.1 结构体成员做函数参数 199
10.6.2 结构体变量做函数参数 200
10.7 结构体指针变量 201
10.8 用指针处理链表 202
10.9 综合应用实例 205
10.10 智能算法能力拓展 208
10.11 习题 210
第 11章 文件系统 211
11.1 文件概述 211
11.2 文件的打开与关闭 213
11.2.1 文件的打开 213
11.2.2 文件的关闭 214
11.3 文件的读写 214
11.3.1 文件尾测试函数 214
11.3.2 文件的字符读/写函数 214
11.3.3 文件的字符串读/写函数 216
11.3.4 文件的数据块读写函数 216
11.3.5 文件的格式读写函数 217
11.4 文件定位 217
11.4.1 文件头定位函数rewind( ) 217
11.4.2 改变文件位置指针函数fseek( ) 218
11.5 综合应用实例 218
11.6 智能算法能力拓展 220
11.7 习题 221
第 12章 人工智能经典算法 223
12.1 概述 223
12.2 K-Means聚类算法 224
12.2.1 问题背景与知识简介 224
12.2.2 数学原理与算法 225
12.2.3 应用领域与拓展学习 229
12.3 K最近邻算法 230
12.3.1 问题背景与知识简介 230
12.3.2 数学原理与算法 230
12.3.3 应用领域与拓展学习 234
12.4 朴素贝叶斯分类算法 235
12.4.1 问题背景与知识简介 235
12.4.2 数学原理与算法 236
12.4.3 应用领域与拓展学习 239
参考文献 243