新書推薦:

《
日本姓名的历史学
》
售價:HK$
55.0

《
积极谈判(沟通力系列) 别害怕冲突 沟通力系列
》
售價:HK$
63.8

《
长寿的吃法:古风村的四季养生食谱
》
售價:HK$
74.8

《
江南以南:被湮没的严州府(火与风丛书)
》
售價:HK$
107.8

《
拍出绝世人像 专业摄影师的闪光灯布光技法解密
》
售價:HK$
140.8

《
远涉重洋:欧亚贸易与商业公司的崛起(一部近代全球贸易的形成史!欧洲商业公司何以横扫东方传统商业组织?西方主导世界背后被低估的组织革命。跨学科的比较史学杰作,开拓性阐释欧亚远程贸易竞争与制度迁移。)
》
售價:HK$
107.8

《
梁晓声说聊斋 茅盾文学奖得主梁晓声为你揭秘《聊斋》中隐藏的社会规则
》
售價:HK$
64.9

《
生物钟与抗衰革命
》
售價:HK$
109.9
|
編輯推薦: |
本书将计算思维的培养与项目驱动的教学方法相结合,内容新颖,结构严谨,适合零基础的初学者,也适合有一定基础但希望深化理解和提升实践能力的读者。
全书共12章,从基础介绍C语言的核心概念;然后深入探讨高级特性;最后通过2个精心设计的综合项目案例引导学生解决实际问题,实现从理论到实践的跨越。
本书选取大量贴近实际、启发思考的例题和习题,并配套丰富的微课视频,将C语言技术的概念、理论和技术巧妙融入实践之中,激发学生浓厚的学习兴趣,提升学习效果。
书中的项目案例既覆盖了C语言的基本知识点,又具有一定的挑战性和实用性,使学生在解决问题的过程中逐步提高分析问题、设计算法、编写代码、调试程序等能力,提升计算思维能力。 本书提供教学大纲、教学日历、教学课件、习题答案等配套资源,读者可登录清华大学出版社网站下载。
|
內容簡介: |
本书不仅全面覆盖C语言的核心语法、数据结构、算法设计等基础知识,还着重培养计算思维能力,并通过一系列精心设计的项目实践,将理论知识生动转化为解决实际问题的能力,使学习过程既有趣又富有成效,旨在培养既具备扎实专业技能又拥有良好道德情操和社会责任感的复合型人才。
來源:香港大書城megBookStore,http://www.megbook.com.hk 全书共分为12章: 第1~3章为C语言基础,这部分内容首先介绍了计算思维的概念,强调了逻辑思维和问题解决的重要性。随后,逐步讲解了C语言的基本语法,包括变量、数据类型、运算符、控制结构等,为后续的学习打下坚实的基础。第4~10章为进阶编程与算法设计,深入探讨了函数、数组、指针、结构体等高级主题,以及如何利用这些概念来设计和实现算法。通过具体的编程实例,引导读者理解如何将抽象的算法思想转化为具体的代码实现。第11、12章为项目实战与综合应用,通过火车订票系统、贪吃蛇游戏两个经典案例,帮助读者将所学知识应用于实践中。每个项目都配有源代码和微课视频教程,以便读者能够循序渐进地完成项目,并在过程中不断巩固和深化对C语言的理解。全书提供了大量应用实例,每章后均附有习题。
本书适合计算机科学及相关专业的本科生、研究生,以及希望通过自学掌握C语言编程技能的爱好者。无论是初次接触编程还是想要进一步提升编程能力,本书都将为您提供宝贵的指导和帮助。
|
目錄:
|
第1章C语言概述1
1.1计算机编程语言与国家信息化战略1
1.2旅行到计算边缘: 从高级语言到晶体管2
1.3计算机编程语言概述3
1.3.1多视角解析: 什么是编程3
1.3.2创世纪: 机器指令与机器语言5
1.3.3第一次符号化: 汇编语言5
1.3.4面向用户: 更加友好的高级语言6
1.3.5变成机器码的两种方式: 编译与解释7
1.4C语言的过去、现在和未来8
1.4.1C语言的产生背景8
1.4.2C语言的发展8
1.4.3C语言的应用场景9
1.5C语言的特点与语法构成9
1.5.1C语言的特点9
1.5.2语法的构成要素10
1.5.3C语言的结构11
1.5.4走进一个完整的C语言程序11
1.6C语言的学习方法12
1.6.1语法学习: 规则的重要性13
1.6.2算法学习13
1.6.3代码的跟踪与调试14
1.7编程规范: 高颜值C语言程序15
1.8IDE的使用16
1.9本章小结18
1.10课后习题19
1.10.1单选题19
1.10.2填空题19
1.10.3简答题19
1.10.4论述题19第2章程序设计基础知识21
2.1标识符与关键字21
2.1.1追根溯源: 变量在计算机内部到底是什么22
2.1.2取一个好名字: 标识符命名与华夏姓氏22
2.1.3关键字23
2.2变量与常量23
2.2.1变量24
2.2.2常量25
2.2.3注释26
2.2.4数据类型和存储方式27
2.2.5类型转换31
2.3运算符与表达式34
2.3.1一切都是运算34
2.3.2算术运算符34
2.3.3赋值运算符35
2.3.4关系运算符36
2.3.5逻辑运算符38
2.3.6位运算符41
2.3.7复合运算符43
2.3.8运算符的优先级44
2.4输入与输出46
2.4.1printf()函数46
2.4.2scanf()函数50
2.5编程规范: 优秀程序员眼中的命名法51
2.6本章小结53
2.7课后习题54
2.7.1单选题54
2.7.2程序填空题55
2.7.3编程题56
第3章控制流程58
3.1选择大于努力58
3.2案例: 猜数游戏59
3.3算法与流程59
3.3.1算法的概念60
3.3.2算法的描述60
3.3.3程序结构与流程图60
3.4选择结构62
3.4.1if语句62
3.4.2ifelse语句63
3.4.3ifelse嵌套64
3.4.4else与if匹配问题66
3.4.5switch语句68
3.4.6选择结构实例71
3.5循环结构73
3.5.1while语句74
3.5.2dowhile语句77
3.5.3for语句77
3.5.4跳转语句79
3.5.5嵌套循环85
3.5.6循环结构实例88
3.6常见错误与排错90
3.6.1C程序常见错误90
3.6.2C程序常用的排错方法92
3.7本章小结96
3.8课后习题96
3.8.1单选题96
3.8.2程序填空题99
3.8.3编程题101
第4章函数102
4.1分而治之(复用)102
4.2案例: 用函数优化猜数游戏104
4.3函数的声明和定义107
4.3.1函数的声明108
4.3.2函数的定义108
4.4函数的参数和返回值109
4.4.1形式参数和实际参数110
4.4.2函数的返回值113
4.5函数的调用116
4.5.1函数调用的基本概念119
4.5.2函数调用的类型119
4.5.3函数的递归调用120
4.6变量作用域123
4.6.1局部变量和全局变量123
4.6.2动态存储与静态存储126
4.6.3用extern声明外部变量128
4.7本章小结130
4.8课后习题130
4.8.1单选题130
4.8.2程序填空题131
4.8.3编程题133
第5章数组134
5.1数组产生的背景134
5.2人以群分、物以类聚134
5.3一维数组 136
5.3.1一维数组的声明与初始化136
5.3.2数组的元素访问与修改139
5.3.3一维数组的常见操作141
5.4二维数组 143
5.4.1二维数组的声明与初始化143
5.4.2二维数组的元素访问与修改144
5.4.3二维数组的常见操作145
5.5多维数组145
5.5.1多维数组的声明与初始化145
5.5.2多维数组的元素访问与修改147
5.5.3多维数组的常见操作149
5.6数组与函数149
5.6.1数组作为函数调用参数149
5.6.2数组作为函数返回值150
5.7一维数组的应用举例 151
5.7.1数组在排序算法中的应用151
5.7.2数组在搜索算法中的应用152
5.7.3数组在统计分析中的应用153
5.7.4数组在加密/解密中的应用154
5.8多维数组的应用155
5.8.1多维数组在图像处理中的应用155
5.8.2多维数组在矩阵运算中的应用156
5.8.3多维数组在游戏开发中的应用157
5.9数组的扩展知识158
5.9.1数组的局部性原理与缓存优化158
5.9.2数组的相关数据结构159
5.9.3数组的性能分析与优化技巧159
5.10课程思政参考案例159
5.11本章小结160
5.12课后习题161
5.12.1单选题161
5.12.2程序填空题162
5.12.3编程题165
第6章指针166
6.1指针与国家信息安全: 程序员的责任与使命166
6.2案例引入: 快速排序167
6.3指针的概念167
6.3.1地址、变量和指针168
6.3.2指针变量的定义和引用168
6.4指针与数组170
6.4.1指针与一维数组170
6.4.2指针与二维数组173
6.4.3指针数组177
6.5指向指针的指针179
6.6指针与函数180
6.6.1指针变量作为函数参数180
6.6.2函数的返回值为指针182
6.6.3指向函数的指针183
6.7内存管理184
6.7.1C语言内存区域划分184
6.7.2动态内存分配函数185
6.8案例实现: 快速排序187
6.9本章小结188
6.10课后习题189
6.10.1单选题189
6.10.2程序填空题190
6.10.3编程题192
第7章字符串193
7.1千里之堤,毁于蚁穴193
7.2案例: 恺撒密码194
7.3走进字符串196
7.3.1字符与字符串196
7.3.2用数组实现的字符串197
7.3.3字符串指针198
7.3.4字符串的输入/输出201
7.4字符串处理函数204
7.4.1计算字符串长度函数strlen()204
7.4.2字符串连接函数strcat()205
7.4.3字符串比较函数strcmp()205
7.4.4字符串复制函数strcpy()206
7.5向函数传递字符串206
7.5.1字符串指针作为函数参数206
7.5.2字符数组作为函数参数207
7.6本章小结208
7.7课后习题208
7.7.1单选题208
7.7.2程序填空题210
7.7.3编程题212
第8章结构体与共用体213
8.1课程思政: “共用体”与“人类命运共同体”的联系和区别213
8.2结构体的基础213
8.2.1结构体类型的概念213
8.2.2结构体变量的定义214
8.2.3结构体变量的引用216
8.2.4结构体变量的初始化218
8.3结构体数组218
8.3.1结构体数组的定义218
8.3.2初始化结构体数组218
8.4结构体指针219
8.4.1指向结构体变量的指针219
8.4.2指向结构体数组的指针219
8.4.3结构体作为函数参数220
8.5结构体的嵌套221
8.6共用体222
8.6.1共用体的概念222
8.6.2共用体变量的引用222
8.6.3共用体变量的初始化222
8.6.4共用体类型的数据特点223
8.7线性表的链式存储结构223
8.7.1线性表链式存储结构定义223
8.7.2线性表链式存储结构的代码描述224
8.7.3单链表的读取224
8.8综合项目: 学生成绩管理225
8.9本章小结 227
8.10课后习题227
8.10.1单选题227
8.10.2程序填空题229
8.10.3编程题231
第9章文件236
9.1文件与隐私保护236
9.2文件的概念与分类237
9.2.1文本文件与二进制文件237
9.2.2文件的存储结构239
9.3文件指针与文件操作函数239
9.3.1文件指针的定义239
9.3.2文件操作函数介绍240
9.4文件的打开与关闭241
9.4.1fopen()函数241
9.4.2fclose()函数242
9.4.3打开文件的错误异常处理242
9.5读取文本文件243
9.5.1按字符读取函数fgetc()243
9.5.2按字符串读取函数fgets()244
9.5.3按格式读取函数fscanf()245
9.6写入文本文件247
9.6.1按字符写入函数fputc()247
9.6.2按字符串写入函数fputs()248
9.6.3按格式化方式写入函数fprintf()249
9.7文本文件操作案例251
9.7.1文本文件复制251
9.7.2文本文件统计253
9.8写入二进制文件255
9.8.1fwrite()函数255
9.8.2二进制文件的顺序写入255
9.8.3二进制文件的随机写入256
9.9读取二进制文件257
9.9.1fread()函数257
9.9.2二进制文件的顺序读取258
9.9.3二进制文件的随机读取259
9.10二进制文件操作案例260
9.10.1二进制文件加密算法260
9.10.2结构体数据存取图片文件的复制263
9.11文件操作函数小结264
9.12综合应用项目264
9.12.1日志文件信息工具264
9.12.2学生信息管理系统267
9.13本章小结272
9.14课后习题273
9.14.1单选题273
9.14.2程序填空题274
9.14.3编程题276
第10章预处理278
10.1推动创新与变革的驱动力278
10.2案例引入: 通用日志库279
10.3宏定义279
10.3.1不带参数的宏定义279
10.3.2带参数的宏定义281
10.4#include指令283
10.5条件编译285
10.5.1#if命令285
10.5.2#ifdef及ifndef命令286
10.5.3#undef命令287
10.5.4#line命令288
10.5.5#pragma命令289
10.6案例实现: 通用日志库289
10.7本章小结291
10.8课后习题291
10.8.1单选题291
10.8.2填空题294
10.8.3编程题295
第11章火车订票系统296
11.1设计目的296
11.2需求分析296
11.3总体设计297
11.4详细设计与实现298
11.4.1系统架构298
11.4.2预处理和数据结构299
11.4.3主函数300
11.4.4框架模块300
11.4.5添加模块303
11.4.6查找模块304
11.4.7显示模块306
11.4.8修改模块307
11.4.9订票模块308
11.4.10退票模块310
11.4.11保存模块312
11.5本章小结314
11.6课后习题315
第12章贪吃蛇游戏开发316
12.1游戏开发背景知识316
12.2需求分析317
12.3设计思路318
12.4数据结构319
12.5代码结构与函数分工319
12.6主函数320
12.7图形渲染320
12.7.1光标位置控制320
12.7.2游戏地图320
12.7.3蛇的初始化321
12.8蛇的移动算法323
12.9碰撞检测324
12.10随机数的产生与食物325
12.11本章小结326
12.12课后习题327
12.12.1简答题327
12.12.2论述题327
|
內容試閱:
|
C语言以其简洁高效、贴近硬件、易于学习却又功能强大的特性,自诞生以来便成为计算机科学领域中最具影响力的编程语言之一。它不仅是操作系统、嵌入式系统开发的首选语言,也是众多高级编程语言和框架的基石。在软件开发、系统编程、硬件接口等多个领域,C语言均展现出了其无可替代的优势,尤其是在培养计算思维、理解计算机底层原理方面,C语言更是发挥着举足轻重的作用。
随着信息技术的飞速发展,对于掌握C语言编程技能的需求日益增强。本书从C语言的基础知识出发,逐步深入,不仅覆盖了C语言的核心语法、数据结构、算法设计等关键内容,更强调通过项目驱动的学习方式,将理论知识与实际应用紧密结合。本书精心设计了一系列贴近实际的项目案例,旨在帮助读者在解决具体问题的过程中,加深对C语言编程的理解,提升解决实际问题的能力。我们还按照TOPCARES能力指标体系组织课程内容,确保读者能够循序渐进地掌握C语言编程的精髓,同时具备良好的沟通能力、创新能力、研究能力、环境意识和社会素养。在本书的编写过程中还充分考虑了课程思政的要求,将社会主义核心价值观、职业道德教育等思政元素融入课程内容之中,引导学生树立正确的世界观、人生观和价值观,培养良好的职业素养和社会责任感。无论是计算机类专业的学生,还是希望转行进入IT领域的从业者,甚至是已经有一定编程基础的开发者,都能从本书中获得宝贵的启示和帮助。
全书共分为12章,章节安排以综合项目工程应用为主线展开,内容讲解由浅入深,层次清晰,通俗易懂。第1章介绍C语言的历史背景、特点及其应用领域,同时引导学生建立计算思维的基础概念。通过简单的编程示例、开发环境介绍,让学生初步体验C语言编程的过程。第2章详细介绍C语言的基本语法,包括数据类型、变量、常量、运算符、表达式等基础知识。第3章讲解条件语句(ifelse)、循环语句(for、while、dowhile)以及跳转语句(break、continue)等控制结构的使用方法。第4章介绍函数的定义、调用以及参数传递方式,培养学生模块化编程的思想。第5章讲解数组的使用方法,包括一维数组、二维数组、多维数组及数组在函数中的应用。第6章介绍指针的基本概念、指针与数组的关系、指针与函数的使用方法以及动态内存分配。第7章介绍字符串的复制、比较等操作,包括字符数组实现字符串的方法。第8章介绍结构体的定义与使用,以及共用体的概念和用途。第9章介绍文件的基本概念、文件的打开与关闭、文件的读写操作。第10章介绍预处理命令的种类、作用,以及宏定义的使用方法和注意事项,提高代码编写效率。第11章通过实现火车订票系统,综合运用前面章节所学的知识点,包括数据结构、文件操作、算法设计等,培养学生解决实际问题的能力。第12章设计并实现一个经典的贪吃蛇游戏,让学生掌握基本的游戏开发技术,包括键盘输入处理、图形绘制、游戏逻辑、碰撞检测等关键内容。
本书具有以下特点。
(1) 计算思维贯穿始终。本书从第1章开始,就将计算思维作为核心教学理念融入其中。通过设计合理的项目案例和练习题,引导学生在解决问题的过程中,自然而然地运用抽象、分解、算法设计、迭代、递归等计算思维方法,从而不仅掌握C语言编程技能,还深刻理解计算思维在软件开发中的重要作用。
(2) 项目驱动的学习模式。结合TOPCARES能力指标,采用项目驱动的教学模式,每一章都围绕一个具体的项目展开,使学生能够在实践中学习编程概念和技术,让学生在解决实际问题的过程中,综合运用所学知识,提升各项能力。
(3) 理论与实践相结合。本书不仅注重理论知识的传授,还强调实践能力的培养。通过提供大量的项目案例和编程练习,让学生在实际操作中加深对C语言语法和编程思想的理解。同时,本书通过启发学生的创新意识,学生的理论知识和实践技能将得到全面发展。
(4) 课程思政与专业技能并重。在传授C语言基础知识、数据结构、算法设计等内容时,巧妙融入社会主义核心价值观、工匠精神、科技伦理等思政元素,引导学生树立正确的世界观、人生观和价值观,培养社会责任感和创新精神。
(5) 微课视频与互动教学。配套提供高质量的微课视频资源,覆盖课程内容与思政元素,通过互动式教学手段,激发学生的学习兴趣和主动性。鼓励学生参与课堂讨论、在线问答等环节,促进师生之间的交流与合作。
(6) 本书在章节习题中提供一定数量的课外实践题目,采用课内外结合的方式,培养学生程序设计的兴趣,提高学生的工程实践能力,使学生能够满足当前社会对C语言编程人员的需求。
(7) 本书提供配套的教学大纲、教学课件、程序源码、习题答案,并配套60个微课视频、400分钟的同步讲解,读者可在清华大学出版社官方网站下载,也可通过封底刮刮卡注册后扫描书中二维码学习。
本书由温荷、王会、刘兆宏、王泽、胡元波、程鹏、林晨、张雪松、文汝杰共同编写。其中,温荷编写了第2章并统稿,王会编写了第3章和第11章,王泽编写了第6章和第10章,胡元波编写了第7、8章,程鹏编写了第1章和第12章,林晨编写了第5章,张雪松编写了第4章,文汝杰编写了第9章。在编写过程中,参阅了东软教育科技集团的教学科研成果,也吸取了国内外教材的精髓,在此对这些作者的贡献表示由衷的感谢。在本书的出版过程中,得到了成都东软学院张应辉校长、张兵副校长、计算机与软件学院宁多彪院长、哈尔滨工业大学计算机学院苏小红教授和电子科技大学计算机科学与工程学院戴波副教授的支持和帮助;还得到了清华大学出版社的大力支持,在此表示诚挚的感谢。在本书的编写过程中使用了微软的IDE开发平台,参照了微软MSDN在线文档和国际标准化组织的C语言语法规范,以及腾讯、阿里巴巴、华为等知名公司的C语言编码规范。在此,对以上组织和企业表示真诚的感谢。课程思政的全书贯通和精准融合是本书的一大特色,其中的课程思政参考了一些知名高校的课程思政成果和思想。项目驱动是本书的另一大特色,教材中的项目教学也得到了成都东软学院实践学期、综合实训等相关老师的指导和支持,以及相关方向班、校企合作单位的支持、意见和反馈,在此一并表示感谢。
由于作者水平有限,书中难免有不妥和疏漏之处,恳请各位专家、同仁和读者不吝赐教和批评指正,并与笔者讨论。
作者
2025年2月于成都
|
|