内容简介
本书以强化理论、精选案例、增强实践创新能力、注重理论联系实际,并与人工智能部分知识点和应用相结合为原则,以社会和企业需求为导向,以C语言的发展为切入点,以基本语法、语句为基础,以结构为主线,以程序案例驱动的编写方式,深入浅出地阐述了C语言的程序设计思想和流程。本书注重对读者设计开发能力的培养,锻炼读者自我思考和解决问题的能力,培养读者的计算思维、编程能力和创新意识,最终结合数据科学计算和人工智能实现读者对常规问题进行自动化和专业化的数据信息处理的目标。
本书共13章,可分为4个部分。第1部分为基础知识,包括第1章C语言简介,第2章程序设计算法与人工智能,第3章数据类型与运算符;第2部分为程序设计基本结构,包括第4章顺序结构程序设计,第5章选择结构程序设计,第6章循环结构程序设计;第3部分为程序高级设计与应用,包括第7章数组,第8章函数,第9章预处理命令,第10章指针,第11章构造数据类型与应用,第12章文件;第4部分为项目综合应用,包括第13章项目综合实训。
书中设置了人工智能和课程思政案例,并通过二维码提供新形态教学资源共享,提升教材的严谨性、代表性和数字化水平。本书内容细致,实例丰富、通俗易懂,适合作为普通高等院校理工类本/专科专业的程序设计语言类教材,也可作为计算机应用工作者的参考书。
目录
第1章 C语言简介 001
1.1 计算机语言的发展 001
1.1.1 机器语言 001
1.1.2 汇编语言 001
1.1.3 高级语言 002
1.1.4 指令与程序 002
1.2 C语言的发展及其特点 002
1.2.1 C语言的发展 002
1.2.2 C语言的特点 003
1.3 C语言的程序格式和结构 004
1.3.1 C语言程序举例 004
1.3.2 C语言程序结构 006
1.4 C语言程序的运行与调试 007
1.4.1 C语言程序的运行环境 007
1.4.2 C语言的程序概念 008
1.4.3 C语言程序的调试运行 008
1.5 C语言程序设计开发流程 011
小结 011
习题 011
第2章 程序设计算法与人工智能 013
2.1 程序设计 013
2.2 算法 013
2.2.1 简单算法举例 014
2.2.2 算法的性质 014
2.2.3 结构化算法的三种结构 014
2.2.4 算法的表示方法 015
2.3 结构化程序设计方法 019
2.4 程序设计、算法与人工智能的融合 020
小结 020
习题 021
第3章 数据类型与运算符 022
3.1 计算机数据的存储与表示 022
3.1.1 整数的二进制表示 022
3.1.2 浮点型数据的二进制表示 022
3.2 数据类型与取值范围 023
3.2.1 数据类型 023
3.2.2 不同数据类型的取值范围 024
3.3 常量与变量 025
3.3.1 标识符 025
3.3.2 常量与符号常量 026
3.3.3 变量 030
3.3.4 变量类型的确定 031
3.4 C语言运算符 031
3.4.1 算术运算符 032
3.4.2 赋值运算符和复合赋值运算符 033
3.4.3 关系运算符 034
3.4.4 逻辑运算符 035
3.4.5 逗号运算符 037
3.4.6 条件运算符 037
3.4.7 位运算符 038
3.4.8 运算符顺序 040
3.4.9 数据混合运算和类型转换 041
小结 041
习题 042
第4章 顺序结构程序设计 047
4.1 顺序结构程序概述 047
4.2 C语句 047
4.2.1 C语句的分类 047
4.2.2 赋值语句 048
4.3 数据的格式输入/输出 049
4.3.1 printf格式输出函数 049
4.3.2 scanf格式输入函数 052
4.3.3 字符数据的输入/输出 055
4.4 综合实例 056
小结 057
习题 057
第5章 选择结构程序设计 061
5.1 if语句 061
5.1.1 单分支if语句 061
5.1.2 双分支if-else语句 062
5.1.3 多分支 063
5.2 选择语句嵌套 064
5.3 switch语句 067
5.3.1 switch语句 067
5.3.2 break语句的作用 069
5.4 综合实例 070
小结 073
习题 073
第6章 循环结构程序设计 079
6.1 for语句 079
6.2 while语句 083
6.3 do-while语句 085
6.4 循环嵌套与几何图案 088
6.4.1 循环嵌套 088
6.4.2 几何图案 088
6.5 转移语句 091
6.5.1 goto语句 092
6.5.2 break语句 092
6.5.3 continue语句 093
6.6 综合实例 094
小结 099
习题 099
第7章 数组 106
7.1 一维数组 106
7.1.1 一维数组的定义 106
7.1.2 一维数组的赋值 107
7.1.3 数组元素引用 108
7.1.4 一维数组应用 109
7.2 二维数组及多维数组 115
7.2.1 二维数组的定义 115
7.2.2 二维数组的存储与表示 116
7.2.3 二维数组的初始化 117
7.2.4 二维数组的引用与实例 117
7.3 字符数组和字符串 120
7.3.1 字符数组 120
7.3.2 字符数组初始化 120
7.3.3 字符数组的引用 121
7.3.4 字符串的存储 121
7.3.5 字符数组的输入/输出 122
7.4 常用字符串函数 123
7.4.1 字符串输出函数puts 123
7.4.2 字符串输入函数gets 124
7.4.3 字符串连接函数strcat 124
7.4.4 字符串复制函数strcpy和strncpy 125
7.4.5 字符串比较函数strcmp 125
7.4.6 字符串长度测试函数strlen 126
7.4.7 字符串其他函数应用 126
7.5 综合实例 127
小结 130
习题 130
第8章 函数 135
8.1 函数的概述 135
8.2 函数的定义 136
8.2.1 函数的定义 136
8.2.2 return语句 137
8.3 函数的调用和声明 138
8.3.1 函数的调用 138
8.3.2 函数的声明 139
8.3.3 函数的嵌套调用 139
8.3.4 函数的递归调用 140
8.4 函数参数的传递 141
8.4.1 参数的值传递 141
8.4.2 参数的地址传递 143
8.5 变量的作用域和存储类型 143
8.5.1 变量的作用域 143
8.5.2 变量的存储类型 145
8.6 内部函数和外部函数 147
8.6.1 内部函数 147
8.6.2 外部函数 147
8.7 综合实例 148
小结 150
习题 150
第9章 预处理命令 156
9.1 宏定义 156
9.1.1 不带参数的宏定义 157
9.1.2 带参数的宏定义 158
9.2 文件包含 159
9.3 条件编译 160
9.3.1 #if的使用 160
9.3.2 #ifdef的使用 162
9.3.3 #ifndef的使用 162
小结 163
习题 163
第10章 指针 166
10.1 指针的概念 166
10.1.1 地址的概念 166
10.1.2 指针 167
10.2 变量的指针和指向变量的指针变量 167
10.2.1 指针变量 167
10.2.2 数据的访问形式 168
10.2.3 指针变量作为函数参数 169
10.3 数组与指针 173
10.3.1 指向数组元素的指针 173
10.3.2 通过指针引用数组元素 174
10.3.3 用数组名作为函数参数 175
10.3.4 多维数组与指针 179
10.4 字符串与指针 182
10.4.1 字符串的表达形式 182
10.4.2 字符指针作为函数参数 183
10.5 指向函数的指针 185
10.5.1 用函数指针变量调用函数 185
10.5.2 用指向函数的指针作为函数参数 186
10.6 返回指针值的函数与指向指针的指针 186
10.6.1 返回指针值的函数 186
10.6.2 指向指针的指针 187
10.7 综合实例 189
小结 192
习题 193
第11章 构造数据类型与应用 197
11.1 结构体 197
11.1.1 定义结构体类型 197
11.1.2 定义结构体类型变量 198
11.1.3 结构体变量的初始化和引用 200
11.2 使用结构体数组 201
11.2.1 定义结构体数组 201
11.2.2 结构体数组的应用 202
11.3 结构体指针 203
11.3.1 指向结构体变量的指针 203
11.3.2 指向结构体数组的指针 204
11.3.3 用结构体变量和结构体变量的指针作为函数参数 206
11.4 用指针处理链表 207
11.4.1 链表的定义 207
11.4.2 建立静态链表 208
11.4.3 建立动态链表 209
11.4.4 输出链表 210
11.4.5 链表删除操作 211
11.4.6 链表插入操作 212
11.4.7 链表综合操作 213
11.5 共用体类型 214
11.5.1 共用体类型的定义 214
11.5.2 共用体变量的引用方式 215
11.6 使用枚举类型 217
11.7 用typedef声明新类型名 218
11.8 综合实例 219
小结 224
习题 224
第12章 文件 228
12.1 C文件概述 228
12.2 文件类型指针 228
12.3 文件的打开与关闭 229
12.3.1 文件打开函数fopen 229
12.3.2 文件关闭函数fclose 230
12.4 文件的读写 231
12.4.1 字符读写函数fgetc和fputc 231
12.4.2 字符串读写函数fgets和fputs 234
12.4.3 数据块读写函数fread和fwrite 235
12.4.4 格式化读写函数fscanf和fprintf 237
12.5 文件的定位和随机读写 238
12.5.1 文件定位 238
12.5.2 文件的随机读写 239
12.6 综合实例 239
小结 241
习题 241
第13章 项目综合实例 245
13.1 数值分析应用 245
13.1.1 数字计算与科学计算 245
13.1.2 结合库或框架的高级数值计算 247
13.1.3 数据挖掘算法 249
13.1.4 人工智能应用 252
13.2 51单片机应用 254
附录A C语言的关键字 260
附录B ASCII码字符表 262
附录C 常用的C语言库函数 265
前言/序言
党的二十大报告中提出:教育、科技、人才是全面建设社会主义现代化国家的基础性、战略性支撑……深入实施科教兴国战略、人才强国战略、创新驱动发展战略,开辟发展新领域新赛道……。教育部等九部门印发《关于加快推进教育数字化的意见》提出:深化教育大模型应用……,将人工智能技术融入教育教学全要素全过程……,建设“通用+特色”高校人工智能通识课程。在信息时代快速发展和电子信息、人工智能成为国家战略性新兴产业的背景下,在人工智能快速发展的基础下,高等院校的程序设计教学面临新的发展机遇和挑战。基于此,编写了本新形态教材《C语言程序设计(慕课版)》。
“C语言程序设计”是高等院校程序设计语言类的通识核心课程,通过该课程的学习,学生可全面了解程序设计语言的基本结构、解题算法,从而提高信息素养和计算思维能力,培养编程能力和创新意识,能够熟练应用C语言程序设计和成熟算法,结合人工智能进行大型应用程序开发,进而为实现数据处理自动化和专业化打下良好的基础。
本书在结构设计、算法优化、案例选择以及编写过程中充分考虑了读者需求,并结合全国计算机等级考试——C语言考试大纲(2025年)和人工智能发展,设计了本书的相关章节内容,力求内容新颖化、案例实用化、课程思政化。本书知识体系贯穿了校内教育和校外需求,也适合不同专业、不同地区院校的教学与社会各层次人士的自学。
本书内容翔实、图文并茂,各章节安排各有特色,以浅显易懂、明确实用的形式详细讲解知识要点,并将理论与实际相结合,指导读者如何强化基础知识,应用程序设计基本思想开发设计程序,使读者能够举一反三。
本书是在人民邮电出版社《C语言程序设计》第2版(2016)的基础上修订和更新的新形态教材(慕课版),本书具有以下特色。
1.紧密结合程序设计大赛和人工智能发展,全面培养程序设计思维和编程能力。本书所有编者都具有丰富的一线教学经验,多数编者参加过企业的社会实践和C语言实训,指导的学生在全国计算机程序设计大赛、蓝桥杯以及RAICOM等比赛中多次获国家级、省部级奖励。本书的编撰思路以企业、社会需求为导向,紧密结合程序设计大赛和人工智能发展,紧跟当前C语言程序设计的发展和应用水平,注重实际开发设计能力,全面培养学生的程序设计思维和编程应用能力。
2.本书实例丰富、特色突出。编者对实例的选取以解决实际问题为导向,同时兼顾中国优秀传统文化和课程思政以及人工智能实例,如迭代法求解、“百钱买百鸡”、矩阵运算、学生成绩的数据处理、数据科学计算与分析、嵌入式单片机开发以及文件的存储操作等,特色突出。
3.分析透彻,可移植性高。编者将程序设计思想贯穿全书。每一个知识点几乎都有或简或难的实例讲解,每一个实例几乎都有解题思路的分析和延伸指导,无论对初学者还是自学者的思维开拓都具有很好的启发和带动作用。本书所有案例主要以Dev C++为主要编译环境,在大部分Turbo C 3.0之前的版本和Microsoft Visual Studio 2020中均可执行。
4.共享二维码扫码资源。本书作为慕课版,配备了重难点教学视频,可扫描书中二维码观看。同时,为了更好地调动初学者和自学者的学习积极性,巩固所学,本书在每一章的后面都附有典型习题,部分习题的分析解答过程可扫描章节最后的“习题解析二维码”,所有习题参考答案可扫描“资源下载二维码”,从而更好地服务广大读者,便于理解与掌握。
本书适合普通高等院校理工类本/专科专业的学习和教学,也可作为程序设计工作者的参考书。
本书集合了教学和科研一线十多位教师共同编写。由王富强、王景景、梁宏涛担任主编,负责书稿的设计、修改和统稿,陈双敏、王莉莉、宫道任副主编。第1章由胡强编写;第2章和第11章由李朝玲和宫道编写;第3章、第5章和第7章由王富强、王景景编写;第4章和第12章由刘明华和卢中彬编写;第6章由刘秀青和王莉莉编写;第8章和第9章由孙劲飞和陈双敏编写;第10章由张春玲和张元刚编写;第13章由张春玲、陈双敏和王富强编写;附录等由梁宏涛编写。
在本书编写过程中,得到了青岛科技大学相关职能部门、信息科学技术学院、中德双元工程学院、中德科技学院和高密校区等多位教师的支持与帮助,在此表示感谢。由于时间仓促,编者水平有限,书中难免存在疏漏和不妥之处,恳请各位读者指正,以便再版时及时修正。
编者
2025年4月