程序设计基础及应用
定 价:59 元
丛书名:全国高等学校计算机教育研究会“十四五”系列教材
本书是一本密切结合计算机语言最新发展的程序设计入门教材,专为初学者量身打造。全书系统阐述了C&C 语言程序设计的基本内容、常用算法设计及应用。全书共12章,内容涵盖了C&C 语言的3种控制结构、函数、数组、字符串、自定义数据类型、文件操作和基本的面向对象程序设计。同时,本书还介绍了常用的顺序与链表结构、通用算法和C STL。本书案例习题丰富,并配有在线课程与实验。本书符合C99标准和C 11标准,同时适当拓展了更高版本知识点,以培养读者的计算思维为目标,注重编程能力的训练。通过数据处理和工程应用中的实际案例,引出相关知识点,有助于读者理解程序设计的思想和方法,为进一步学习C语言底层嵌入式应用程序编程以及C 语言进行大型应用软件系统的开发奠定基础。本书是对新工科教学实践的探索,是国家级一流本科课程的配套教材。面向零编程基础的读者,适合作为高校各专业低年级学生学习程序设计的入门教材。
1. 用C 语言编写的程序,充分利用c 库实现丰富的功能。2. 介绍的大部分的知识,符合C语言的标准,用户可以无障碍切换到C语言的学习。3. 通过工程应用实例展现C/C 语言的相关应用,方便读者快速掌握程序设计的思想。4.注重在Windows与Linux等多平台的编写编译,满足零基础读者学习后在嵌入式、机器学习、工程应用等方面的进一步开发学习。4. 提供丰富的在线教学与实验资源,满足边学边练,适合于没有任何编程基础的学习者选取的入门教材。5. 适合于高等院校各专业的本科生的通识教材。
自2020年《程序设计基础及应用(C&C 语言)》首版问世以来,已在全国多所高校中历经万余名师生的教学实践,收获了众多宝贵反馈。其配套数字资源更是荣获2021年中国计算机教育大会计算机类教学资源建设优秀课程配套资源一等奖。2024年,本书荣获北京高校优质本科教材奖。作为国家级线上线下混合式一流本科课程《计算机语言程序设计》的配套教材,本书亦是首批新工科项目的重要建设成果,深度展现了C&C 语言技术的最新进展,尤其是在数据处理应用领域的教学研究与改革成果。本次改版立足于教学发展前沿趋势,以学生为中心,旨在培养新工科背景下所需的人才。通过教学研用四位一体的创新教学模式,全面融合工程教育认证标准、课程思政理念、学科竞赛经验以及一流本科课程建设成果,实现了课程建设与数字教材的完美统一。我们的核心目标是激发学生的创新思维,提升他们解决复杂问题的能力,特别是在数据处理与大数据领域。全书在保持C语言面向过程与C 面向对象基础上,从知识体系到教材形式都进行了全面革新,以确保教材内容的时效性、准确性和教学的有效性。相较于第一版,本版的主要改动与特色包括:1. 形态升级。通过二维码嵌入视频、文档等多媒体资源,将在线课程、在线实验与教材紧密融合,极大丰富了学习体验。2. 章节重组。重新规划章节结构,新增函数式程序设计、匿名函数、函数对象、正则表达式等现代编程知识,深化泛型编程、C STL及算法内容,并通过二维码提供拓展实例和讲解,使内容更为丰富实用。3. 实例更新。修订各章实用知识与案例,强化科学计算、文本数据处理、可视化、文件交互、算法与库等实践环节,助力读者深入理解C&C 语言在实际问题中的应用,培养编程思维和实践能力,同时为参加天梯赛、CSP、PAT等竞赛及认证的读者提供坚实基础。4. 习题增强。大幅增加头歌与PTA平台的在线实训题目,并通过二维码与在线课程提供题解资料与视频,引导读者通过AI助力编程,提升思考与总结能力,进而增强解决问题与学习新技术的能力。5. 代码优化。部分示例为完整程序,其余为程序段,旨在激发读者思考并自行补充完整,通过实践验证加深程序性知识理解,促进自我反思。6. 教学支持强化。课程、教材及实验深度融合,读者可通过附录了解加入方法,教师可联系作者获得更多权限,以便在公共平台上开展混合式教学。读者亦可自主加入在线课程与实验,充分利用教材资源。7. 知识图谱引领。本书采用知识图谱贯穿内容,将丰富资源、经典案例和代表性实践融为一体,实现线上线下资源的无缝对接,有效解决了资源分散与知识碎片化问题,满足了数智化时代师生的多元化需求。书中个别章节加号,通常表示该章节为选读内容,建议学生自主学习。本教材及其丰富的在线资源,共同构建了一个全方位、多层次的C&C 教学生态系统。读者不仅能够通过课程平台的知识图谱、拓展资料和AI助教功能获得深度学习支持,还能通过在线实验编程,将理论知识转化为实践技能,享受沉浸式学习体验。我们期待《程序设计基础及应用(C&C 语言)》(第2版)能够成为广大教师和学生教学相长的得力助手。我们相信,借助这本教材,学生将能系统掌握C&C 编程的核心知识与技能,为未来的学术深造与职业发展奠定坚实的基石。本书的修订工作由陈春丽与王振华两位老师完成,其中,陈春丽老师精心打造了第1~7、第9~10章的内容,王振华老师负责了第8章、第11~12章的编纂。此外,中国地质大学(北京)信息工程学院计算机基础教学团队的教师们对本书的教学实践提出了诸多宝贵建议与实践案例,并积极参与了国家级一流本科课程计算机语言程序设计的建设,共同促使本版教材为一套配套齐全、形态新颖的教学用书。本书获得中国地质大学(北京)十四五本科规划教材立项支持。此外,还要特别感谢全国高等学校计算机教育研究会和全国高等院校计算机基础教育研究会对本书修订工作的立项支持。同时,也向清览、超星、PTA、头歌等平台表达诚挚的谢意,感谢它们为本书在线资源的发布提供了有力的技术支持与广泛的传播渠道。国家级一流本科课程计算机语言程序设计的课程网站为https://www.xueyinonline.com/detail/245126882,所有内容免费。欢迎广大读者多提宝贵意见和建议,指出书中错误,可以直接发送邮件至ccl@cugb.edu.cn,作者非常感谢并会及时回复。
作者中国地质大学(北京)信息工程学院
第1章计算机语言程序设计概述11.1程序设计语言发展11.1.1机器语言到高级语言11.1.2高级语言翻译成机器语言21.2C&C 语言概述31.2.1C&C 语言的发展31.2.2C&C 语言的特点31.3算法简介31.3.1算法的特点与描述31.3.2算法的评价51.3.3数据结构与算法一题多解61.4三大程序设计思想71.4.1面向过程程序设计71.4.2面向对象程序设计81.4.3函数式程序设计81.5认识C&C 源程序81.5.1程序示例81.5.2程序代码说明101.6C&C 开发环境131.6.1常用的编译器及IDE131.6.2AI助力编程141.7实用知识: 常见的编译和运行错误141.7.1常见的编译错误141.7.2常见的运行错误151.8练习与思考16第2章顺序结构与数学表达式182.1顺序结构18〖3〗程序设计基础及应用(C&C 语言)第2版目录〖3〗2.2基本数据类型与变量192.2.1基本数据类型简介192.2.2变量与内存的关系192.2.3变量定义与初始化202.2.4赋值运算符与自增/自减运算符202.2.5陷阱: 变量定义与赋值的常见问题222.3常量242.3.1字面常量242.3.2符号常量252.3.3#define宏定义262.3.4sizeof运算符282.4数学运算符与表达式282.4.1算术运算符282.4.2算术表达式及优先级292.4.3复合赋值运算符292.4.4逗号运算符292.4.5陷阱: 算术运算的常见问题302.5位运算符和表达式312.5.1位运算符及功能312.5.2位运算的应用322.6类型转换332.6.1隐式类型转换332.6.2显式类型转换332.6.3C 的类型推导342.7输入与输出342.7.1C 的cin和cout352.7.2库函数scanf和printf382.7.3C 20的format格式化402.7.4一个字符的输入与输出412.8实用知识: 常用的数学库函数422.8.1欧氏距离计算两个坐标点距离422.8.2半正矢法计算两个经纬度点的距离432.9简单程序算法及应用442.9.1交换两个整数的值442.9.2字母加密452.10练习与思考46第3章选择结构及相关表达式483.1选择结构483.2关系运算符和关系表达式493.2.1关系运算符493.2.2关系表达式及应用493.2.3陷阱: 关系表达式的常见问题503.3逻辑运算符和逻辑表达式503.3.1逻辑运算符503.3.2逻辑表达式及应用513.4if语句523.4.1标准if…else…语句523.4.2简单的if语句533.4.3复杂的if…else if…else语句533.4.4if语句的嵌套553.4.5条件运算符及条件表达式553.5switch语句563.5.1switch语句实现多分支结构563.5.2break语句的合理使用573.5.3if与switch的混用573.6实用知识: 通用工具函数583.6.1生成随机数函数583.6.2进程控制函数593.7选择结构算法及应用603.7.1判断整数m是否能被n整除603.7.2大写字母转换成小写字母603.7.3简单的四则运算器613.8练习与思考62第4章自定义函数与封装664.1函数与结构化程序设计664.2自定义函数的声明与定义684.2.1函数的声明684.2.2函数的定义694.2.3函数返回值704.2.4陷阱: 函数定义的常见问题714.3函数的调用724.3.1函数调用的格式724.3.2陷阱: 函数调用的常见问题734.3.3函数的嵌套调用744.3.4调用内联函数764.4函数的参数传递764.4.1参数的值传递764.4.2C 的引用传递774.4.3const修饰引用形参794.5变量的作用域与生存期794.5.1局部变量的作用域与生存期794.5.2全局变量的作用域与生存期804.5.3静态变量的作用域与生存期814.6C 的函数重载与默认参数824.6.1C 的函数重载824.6.2C 的默认参数834.6.3陷阱: 函数重载的二义性844.7递归思想递归函数854.7.1递归函数的定义854.7.2递归函数的调用过程864.7.3递归调用中的栈884.8实用知识: C 函数高级特性884.8.1返回类型推导894.8.2返回类型后置894.8.3匿名函数(Lambda)894.9自定义函数的应用904.9.1获得用户选择的购物菜单904.9.2递归求快速幂问题914.10练习与思考92第5章迭代与循环结构955.1循环结构955.2循环控制语句965.2.1while语句965.2.2for语句985.2.3do…while语句1005.2.4陷阱: 循环的常见问题1015.3循环和迭代的提前结束1025.3.1break语句1025.3.2continue语句退出迭代1045.4循环结构的嵌套1055.4.1循环嵌套的语句1055.4.2多种循环的优化1075.5循环与递归1085.6实用知识: 循环读入与出错处理1105.6.1循环读入直到满足特定条件1105.6.2控制多行输入直到EOF结束1105.6.3忽略输入错误的输入控制1115.7循环结构的算法及应用1135.7.1数学表达式的求解1135.7.2多种方法求一组数的平均值1145.7.3循环执行用户选择菜单功能1155.8练习与思考116第6章数值型数组与数据处理1196.1一维数组1196.1.1一维数组的定义与存储1196.1.2数组元素的使用1216.1.3基于范围的for循环1236.2一维数组与指针1246.2.1指针与指针变量1246.2.2函数参数的址传递1266.2.3使用指针变量访问数组1286.2.4陷阱: 数组越界问题1296.3一维数组与函数1296.3.1一维数组作为函数的形参1296.3.2返回指针的函数1336.4实用知识: 数据处理的实用算法1336.4.1中值与方差(标准差)计算1346.4.2返回数组的最大值/最小值及下标1346.4.3顺序查找与折半查找1366.4.4冒泡排序与选择排序1376.4.5插入与删除1396.5二维数组与多维数组1416.5.1二维数组的定义与存储1416.5.2二维数组元素的使用1426.5.3二维数组与指针1436.5.4二维数组与函数1446.5.5多维数组1456.6指针数组与二级指针1456.6.1指针数组1466.6.2二级指针1476.7数据处理与工程应用1476.7.1实现购物菜单的结账子功能1476.7.2接收不定个数的整数1486.7.3计算日平均温度与最大温差1506.7.4动态规划算法应用实例1516.8练习与思考152第7章字符型数组与字符串处理1557.1字符数组的定义与初始化1557.1.1字符数组的定义1557.1.2字符数组的初始化1567.1.3字符数组元素的使用1567.1.4陷阱: 字符串使用=和==的问题1577.2字符数组的输入与输出1577.2.1接收一个单词给字符数组1577.2.2接收一行句子给字符数组1587.2.3输出字符串1597.2.4陷阱: 混合输入字符串和数字的问题1607.3字符数组与函数1607.3.1字符数组作为函数的形参1607.3.2数组作为函数的返回值1637.3.3字符串数组1647.4字符串与数值型的转换函数1657.4.1利用sprintf函数将数值转换为字符串1657.4.2利用sscanf 函数将字符串转换为数值1657.5实用知识: 字符串处理函数1657.5.1常用函数1667.5.2字符或子串查找与替换1677.5.3字符串分割1687.5.4内存处理函数1687.6字符串处理综合应用1697.6.1所有单词首字母大写1697.6.2合并两个有序字符串1707.6.3身份证号码是否合法1707.7练习与思考171第8章文件与数据处理1738.1文件概述1738.1.1文件存储类型1738.1.2文件对象1738.2C 文件打开与关闭1748.2.1文件的打开1748.2.2文件的关闭1768.3C 的文件读写1768.3.1fstream类的常用检查方法1768.3.2文本文件的读写1778.3.3二进制文件的读写1808.3.4随机读写1818.4C语言的文件操作1838.4.1C语言的文件打开与关闭1838.4.2C语言的文件读写1848.5实用知识: 带参数的main函数1868.6文件应用示例1878.6.1密码文件的读写1878.6.2学生成绩分段统计效果图1888.6.3温度周报文件的读写1908.7练习与思考190第9章自定义数据类型1929.1C 的类与对象1929.1.1类的定义1929.1.2创建和使用对象1959.1.3构造函数和析构函数1979.1.4对象数组1999.1.5运算符重载2009.2C 类的进一步定义2029.2.1C 类的继承性2029.2.2C 类的多态性2069.2.3命名空间2109.3typedef类型与using2109.3.1typedef2119.3.2using2119.4结构体2119.4.1结构体类型的定义2119.4.2结构体类型变量2129.4.3结构体类型的数组2159.5联合体2169.5.1联合体的定义与应用2169.5.2位段的定义与应用2179.6枚举类型2189.6.1枚举类型的定义与使用2189.6.2C 的枚举类2209.7实用知识: C 的string类2209.7.1string类对象的定义2209.7.2string 类成员函数2219.7.3string 类的运算符2229.7.4string类对象的输入与输出2229.7.5string与其他类型转换2239.7.6C 正则表达式2249.8自定义类型的综合应用2269.8.1自定义日期类2269.8.2自定义类型数据的文件读写 2289.9练习与思考229第10章指针进阶应用23210.1void指针23210.2函数指针与函数对象23310.2.1函数指针23310.2.2函数对象23410.3动态内存分配与回收23510.3.1栈内存与堆内存23510.3.2在C 中动态分配内存23610.3.3含有动态内存分配成员的类23810.3.4malloc与free函数23910.4C 的智能指针24010.4.1unique_ptr24010.4.2shared_ptr24010.4.3weak_ptr24110.5链式数据结构24110.5.1单链表24210.5.2单链表的访问24310.5.3单链表结点的插入24310.5.4单链表结点的删除24510.6实用知识: 通用算法函数24610.6.1改变序列的算法24710.6.2不修改序列的算法24710.6.3有序范围的操作24910.6.4for_each函数24910.7链表与算法的应用25010.7.1链表的应用25010.7.2算法的应用25110.8练习与思考252第11章泛型编程与C 标准模板库25411.1模板与泛型编程机制25411.1.1C 的函数模板25411.1.2C 中的类模板25511.1.3C 的可变参数模板25611.1.4C11的泛型宏25711.2C 模板类pair与tuple25711.2.1pair25711.2.2tuple25811.2.3比较pair与tuple25911.3C STL组件25911.3.1容器类型25911.3.2迭代器26011.4C 顺序容器26111.4.1array与vector26111.4.2list与forward_list26311.5C 关联容器26411.5.1set与multiset集合26511.5.2map与multimap映射26511.6C 容器适配器26611.6.1stack26611.6.2queue与priority_queue26611.7实用知识: C 数值计算26811.7.1数值界限26811.7.2泛型数值计算算法26811.7.3线性代数运算26911.8数据处理与统计分析27011.8.1数据分类汇总及Top n排名27011.8.2统计频次最高的前n个单词27111.9练习与思考272第12章软件工程项目开发应用技术27412.1程序设计的多文件结构27412.1.1多文件工程27412.1.2条件编译指令27612.2静态链接库27612.2.1创建静态链接库27712.2.2部署静态链接库27812.3异常处理27812.4GUI与可视化设计27912.4.1GUI框架和工具27912.4.2C 语言的GUI程序27912.4.3EasyX绘图实例28012.5练习与思考282