高等教育 > 计算机基础教育

C语言程序设计(第二版)

书号:9787113323523 套系名称:普通高等院校“十四五”计算机基础系列教材

作者:郑爽 崔玲 李秀荣 出版日期:2025-08-01

定价:58.00 页码 / 开本:无 /16

策划编辑:陆慧萍 责任编辑:陆慧萍 彭立辉

适用专业:计算机基础教育 适用层次:高等教育

最新印刷时间:2025-08-01

资源下载
教学课件 教学素材
习题答案 电子教案
内容简介 前言 目录 作者介绍 图书特色
  • 本书是国家级教改立项研究项目“以计算思维能力培养为核心的理工类专业大学计算机课程改革研究”成果之一。
    本书以培养学生计算思维能力为目标,从解决实际问题的角度出发,由导例引出知识点,强化程序设计求解问题的思路和方法。本书主要介绍了程序设计的基本概念、结构化程序设计方法,重点阐释了C语言的各种数据类型、运算符与表达式、基本流程控制结构、模块化程序设计方法、数组、指针、结构体和文件系统等核心内容。
    本书内容全面,知识点详尽,通过典型例题的解题分析及C程序的实现,串联一般程序设计的全过程,可帮助读者进一步加强对C语言的理解,掌握C程序设计的思想和方法。
    本书适合作为普通高等院校非计算机专业C语言程序设计课程的教材,也可作为从事计算机相关工作人员的参考书。
  •        伴随大学计算机基础教育教学改革的持续深化,高校计算机基础教育正经历从工具技能培养向智能素养提升的范式转型。为贯彻落实《教育部关于全面提高高等教育质量的若干意见》精神,教育部高等学校计算机基础课程教学指导委员会自2012年启动首轮课程改革以来,已形成以计算思维培养为核心的教学体系。2023年发布的《新时代大学计算机基础课教学基本要求》进一步明确,要将人工智能、大数据等新一代信息技术深度融入课程体系,构建“计算思维+智能赋能”的双轮驱动模式。程序设计作为此模式中的核心课程,被赋予了新的内涵,即为计算思维和人工智能的教育奠定理论和技术基础。
           大学计算机基础教育已经取得了以“面向应用、需求导向、能力核心、分类指导”的基本经验和规律。本书按照以上经验和规律,明确把C语言程序设计学习过程和计算思维的训练环节融合一起。在训练技能的过程中,融入计算思维能力的培养,注重追求教学活动过程中的有效性与效率,以计算思维为切入点,以能力培养为导向,注重培养具有创新意识的应用型人才。通过本书的学习,学生可了解C语言程序设计对人们生活、工作、学习方式的影响和对经济社会发展所做出的贡献;了解计算机学科与自然科学、工程技术、人文社科等相互渗透、交叉融合,促进各学科的发展;理解和掌握程序设计的基础知识和基本方法;掌握基本的程序设计、应用能力;掌握利用C语言程序设计解决专业领域问题的思路和方法。
           本书是国家级教改立项研究项目“以计算思维能力培养为核心的理工类专业大学计算机课程改革研究”成果之一。在本书第一版编写过程中,谭浩强教授、吴文虎教授、高林教授及“大学计算机基础教育改革理论研究与课程方案项目课题组”的专家均提供了宝贵建议和意见,高林教授在百忙之中对全书进行了审定。经过多年的教学应用,编者结合教学实践中的问题及读者反馈意见对第一版的内容进行了修订,保留主要的内容组织结构,重点修订了部分导例,使其更具有典型性和实用性;从高等院校非计算机专业学生的需求出发,修改了部分知识点的内容,力求通过导例引入知识点的形式,提高学生的学习兴趣,从而学会应用编程语言解决实际问题。
           本书的主要特点:
           (1)以培养大学生信息素养和应用能力为目标,遵循“程序=算法+数据结构”的理念,在内容安排上与同类教材有所不同。在内容上增加了算法初步,让学生对程序设计中的常用算法有初步的了解,以便日后深入学习;按照数据结构的构成来组织相关章节,在保持传统数据组织方式的基础上,在内容上增加了栈、队列、二叉树、数据库等数据组织方法,丰富了数据处理的结构,知识点更系统;让学生能更好地理解程序的内涵和特征。
           (2)以“问题—思路(问题求解)—算法(模型)—代码—调试—修改—实现”为路线,由导例引出问题,通过“问题描述、问题分析、算法描述、程序实现、运行结果、程序分析”六个步骤串联程序设计的全过程并解决问题,从而引出相关的知识点与技能点,进而引导学生掌握程序设计的思想和方法。通过大量的导例学习,一方面学生较容易掌握程序设计的基本方法;另一方面,由于重复性的训练符合思维能力的培养过程,必然会影响学生的思维方式,提升其思维能力。
           (3)以培养学生计算思维能力为切入点,把计算思维贯穿在教材编写的各个环节。在教材中处处体现方法、思路是解决问题的灵魂,强调解决问题的方法、思路,关注知识点的学习,强化编程技能的训练,将C语言程序设计学习过程和计算思维的训练环节结合起来,在问题求解、编程训练、教学实践的各个环节融入计算思维能力的培养。
           (4)以导例为主线,通过导例引出知识点,通过问题的解决对知识点进行深入学习。全书导例的编排由浅入深,以培养学生分析问题、解决综合问题,以及程序设计的能力。在每章的最后按照“易、中、难”对习题进行了分类标注,以适合不同学生按需之用。
           (5)结合程序设计的应用领域,编写了对应的综合案例,学生可以根据所在专业选择相近的案例进行学习。通过综合案例可了解通过程序设计如何解决专业领域的问题,潜移默化地培养学生计算思维能力。
           本书适合作为普通高等院校非计算机专业程序设计基础课程教材,建议授课学时32~48学时。期望学生通过对本书的学习,可以达到以下三个目标:
           (1)掌握程序设计的基本概念,熟悉C语言编程的基本方法,具备利用C语言编程的能力。
           (2)具备应用C语言程序设计解决专业问题的初步能力。
           (3)提升思维能力,特别是利用计算思维解决专业领域问题的能力以及处理其他问题的能力。
           本书在内容的组织、导例的选取、编程的步骤、知识点的讲授方法,以及习题难易程度的编排上都进行了认真思考,找到了解决计算思维从学术研究“落地”到教学过程这一操作层面上的可行方法,力求将C语言程序设计课程建设成为支撑提升学生计算思维能力的一个有效环节。
           本书由郑爽、崔玲、李秀荣主编,郑小静、张荣茜、刘宇明、刘燕辉、段娟和巩晓蕾参与编写。其中第1章、第3章、第7章由郑爽编写,第2章由崔玲、郑小静编写,第4章由李秀荣编写,第5章由张荣茜、巩晓蕾、李秀荣、段娟编写,第6章由刘宇明、刘燕辉编写,附录A由崔玲、郑爽、李秀荣共同整理了本书中的主要知识点和相应的思维要素,以及综合案例拓展,以二维码呈现,供有需要的读者扫码观看。全书由郑爽、崔玲、李秀荣统稿并定稿。
           由于时间仓促,编者水平有限,书中难免存在疏漏与不妥之处,恳请读者批评指正。编者邮箱:zshuang@bjut.edu.cn。
    
    
    编  者
    2025年2月
  • 目录
    第1章  绪论 / 1
    1.1  程序设计 / 1
    1.1.1  程序设计与算法 / 1
    1.1.2  程序设计语言 / 3
    1.2  计算思维 / 4
    1.2.1  问题的提出 / 4
    1.2.2  计算思维能力培养 / 5
    1.2.3  程序设计能力与计算思维能力 / 6
    1.3  C程序开发的基本过程 / 8
    1.3.1  安装Dev-C++集成开发环境 / 8
    1.3.2  运行C程序的基本过程 / 9
    1.3.3  利用Dev-C++集成开发环境运行C程序 / 9
    第2章  C语言程序设计基础 / 11
    2.1  C语言程序的基本结构和特点 / 11
    2.1.1  导例:输入生日并显示 / 12
    2.1.2  导例:比大小 / 13
    2.1.3  C程序的基本结构 / 14
    2.1.4  C语言的基本特点 / 16
    2.2  基本数据类型与基本输入/输出 / 16
    2.2.1  导例:计算BMI / 17
    2.2.2  导例:字符加密 / 18
    2.2.3  导例:考核结果 / 19
    2.2.4  C语言提供的基本数据类型 / 20
    2.2.5  标识符与关键字、常量与变量 / 22
    2.2.6  运算符与表达式 / 24
    2.2.7  基本的输入/输出 / 26
    2.3  基本控制结构——顺序结构 / 28
    2.3.1  导例:计算圆的周长和面积 / 28
    2.3.2  导例:逆序输出 / 29
    2.3.3  赋值语句、函数调用语句 / 31
    2.4  基本控制结构——分支结构 / 31
    2.4.1  导例:考核通过了吗 / 32
    2.4.2  导例:今年是闰年吗 / 34
    2.4.3  导例:求解一元二次方程 / 35
    2.4.4  导例:计算存款利息 / 37
    2.4.5  if语句 / 39
    2.4.6  switch语句 / 41
    2.5  基本控制结构——循环结构 / 42
    2.5.1  导例:计算n! / 42
    2.5.2  导例:寻找幸运字符 / 43
    2.5.3  导例:计算π的近似值 / 45
    2.5.4  导例:数字三角形 / 47
    2.5.5  for语句 / 48
    2.5.6  while语句 / 49
    2.5.7  do...while语句 / 50
    2.5.8  嵌套循环 / 50
    2.5.9  转向语句:break和continue语句 / 51
    2.6  综合案例 / 53
    2.6.1  导例:可以构成三角形吗 / 53
    2.6.2  导例:列出小于n的全部素数 / 55
    2.6.3  导例:诚实族和说谎族 / 57
    2.6.4  导例:制作电子月历 / 60
    2.6.5  程序设计风格 / 63
    2.6.6  程序调试的基本方法 / 63
    习题 / 67
    第3章  算法初步 / 71
    3.1  算法的基本概念 / 71
    3.1.1  导例:猜猜商品价格 / 71
    3.1.2  导例:过河游戏 / 72
    3.1.3  算法定义与基本特征 / 74
    3.1.4  算法设计的基本过程 / 75
    3.1.5  算法的评价标准 / 75
    3.2  算法的描述 / 76
    3.2.1  导例:生活中的流程 / 76
    3.2.2  导例:猜猜商品价格的流程图 / 77
    3.2.3  算法的描述 / 78
    3.2.4  问题求解的过程 / 80
    3.3  常用算法 / 80
    3.3.1  导例:古堡算式问题 / 80
    3.3.2  导例:神殿寻宝 / 82
    3.3.3  导例:大臣的旅费 / 84
    3.3.4  穷举法 / 87
    3.3.5  递归算法 / 88
    3.3.6  动态规划法 / 89
    习题 / 90
    第4章  函数 / 91
    4.1  库函数 / 91
    4.1.1  导例:平方根表 / 92
    4.1.2  导例:随机生成一张扑克牌 / 94
    4.1.3  库函数使用方法 / 97
    4.1.4  常用的库函数 / 98
    4.2  自定义函数 / 99
    4.2.1  导例:阶乘累加和  / 100
    4.2.2  导例:素数判断 / 102
    4.2.3  函数的定义、声明和调用 / 105
    4.2.4  函数调用过程分析 / 107
    4.3  函数的参数传递与返回值 / 107
    4.3.1  导例:富翁与骗子 / 107
    4.3.2  导例:数字三角形 / 110
    4.3.3  函数的参数传递 / 112
    4.3.4  函数的返回值 / 114
    4.4  递归函数 / 116
    4.4.1  导例:假币问题(三分法) / 116
    4.4.2  导例:Fibonacci数列 / 118
    4.4.3  递归函数的执行过程 / 122
    4.4.4  递归函数的效率分析 / 124
    4.5  局部变量、全局变量与变量作用域 / 126
    4.5.1  导例:公园人数统计 / 126
    4.5.2  局部变量和全局变量 / 128
    4.5.3  变量的作用域和生存期 / 128
    4.6  函数综合应用 / 132
    4.6.1  导例:模拟银行ATM机存取款 / 133
    4.6.2  导例:贷款计算器 / 139
    4.6.3  程序主体框架的设计与实现 / 144
    4.6.4  模块化程序设计的基本特征 / 145
    习题 / 146
    第5章  组合数据类型 / 151
    5.1  数组 / 152
    5.1.1  导例:计算比赛成绩 / 152
    5.1.2  导例:搜索引擎相关度排序 / 153
    5.1.3  导例:抓扑克牌 / 155
    5.1.4  导例:网络故障检索 / 157
    5.1.5  导例:谁是冠军 / 159
    5.1.6  导例:网页登录密码加密 / 161
    5.1.7  一维数组 / 163
    5.1.8  二维数组 / 165
    5.1.9  字符数组及字符串 / 166
    5.1.10  数组作为函数参数 / 170
    5.2  结构类型 / 171
    5.2.1  导例:图书类型 / 172
    5.2.2  导例:教材统计 / 173
    5.2.3  导例:坐标变换 / 175
    5.2.4  结构类型的基本操作 / 177
    5.2.5  结构数组 / 178
    5.2.6  结构类型作为函数的参数与返回类型 / 179
    5.3  指针类型 / 180
    5.3.1  导例:密室逃脱 / 181
    5.3.2  导例:统计输出所有学生的考勤成绩 / 182
    5.3.3  导例:求一次体育抽测的统计数据 / 185
    5.3.4  导例:十二生肖名称的翻译 / 187
    5.3.5  导例:计算快递费 / 189
    5.3.6  指针的概念 / 191
    5.3.7  指针变量 / 191
    5.3.8  指针的应用 / 192
    5.4  链表 / 195
    5.4.1  导例:线上审批流程 / 196
    5.4.2  导例:叫号系统 / 198
    5.4.3  单链表的定义 / 201
    5.4.4  单链表的基本操作 / 202
    习题 / 204
    第6章  数据结构 / 211
    6.1  栈 / 211
    6.1.1  导例:播报站名 / 212
    6.1.2  导例:简单编译器 / 214
    6.1.3  栈的相关概念与基本操作 / 218
    6.1.4  利用栈组织数据的基本特征 / 222
    6.2  队列 / 222
    6.2.1  导例:智能填写手机号 / 222
    6.2.2  导例:解密电话号码 / 225
    6.2.3  队列的相关概念与基本操作 / 229
    6.2.4  利用队列组织数据的基本特征 / 234
    6.3  二叉树 / 235
    6.3.1  导例:统计叶子结点数目 / 235
    6.3.2  导例:动态查找 / 238
    6.3.3  二叉树的相关概念与基本操作 / 242
    6.3.4  利用二叉树组织数据的基本特征 / 245
    6.4  综合应用举例 / 246
    6.4.1  导例:走迷宫 / 246
    6.4.2  导例:排队模拟 / 248
    6.4.3  导例:神秘电报密码——哈夫曼编码 / 252
    6.4.4  数据结构在程序设计中的作用 / 256
    6.4.5  数据结构概论 / 256
    习题 / 260
    第7章  数据外部存储 / 265
    7.1  文件 / 265
    7.1.1  导例:读取通讯录文件 / 266
    7.1.2  导例:从通讯录文件中查询联系人 / 268
    7.1.3  导例:备份通讯录文件 / 270
    7.1.4  文件的相关基本概念 / 272
    7.1.5  文件的基本操作 / 273
    7.2  数据库应用 / 277
    7.2.1  导例:创建MySQL数据库 / 277
    7.2.2  导例:从MySQL数据库中读/写通讯录 / 279
    7.2.3  C程序对MySQL数据库的操作 / 283
    习题 / 286
    附录A / 287
    参考文献 / 288
  • 郑爽,硕士,讲师,现任北京工业大学计算机学院计算中心主任,主要承担学校非计算机专业公共课教学,主授课程包括C语言程序设计、Python程序设计等。发表专业学术论文多篇。崔玲,博士,讲师,现任教于北京工业大学计算机学院,主授课程包括C语言程序设计、MySQL数据库技术等。 李秀荣,硕士,副教授,现任教于北京工业大学计算机学院,主授课程包括C语言程序设计、Python程序设计等。?
  • (1)遵循“程序=算法+数据结构”的理念,在内容上增加了算法初步,使学生对程序设计中的常用算法有一个初步的了解,便于后续专业深入学习;
    (2)强调解决问题的方法、思路,强化编程技能的训练,将C语言程序设计学习过程和计算思维的训练环节结合起来,在问题求解、编程训练、教学实践的各个环节上融入计算思维能力的培养。