《程式设计基础(C语言)(第2版)》是由高克宁等编着,2013年清华大学出版社出版的“十二五”普通高等教育本科国家级规划教材、高等学校计算机基础教育规划教材、教育部-英特尔精品课程配套教材、辽宁省精品课程配套教材。该教材适合作为高等院校理工科学生教材,也可作为计算机培训教材。
该教材共15章,以C语言为依託,介绍了程式设计的基本方法和技术,以程式设计思想、程式设计语言、程式设计技术和软体工程管理四条主线组织相关内容。
基本介绍
- 书名:程式设计基础(C语言)(第2版)
- 作者:高克宁、李金双、赵长宽、柳秀梅、徐彬
- ISBN:9787302325536
- 类别:“十二五”普通高等教育本科国家级规划教材
- 页数:426页
- 出版社:清华大学出版社
- 出版时间:2013年8月1日
- 装帧:平装
- 开本:16开
- 字数:690千字
- CIP核字号:2013109925
成书过程
修订情况
为适应国家“卓越工程师教育培养计画”提出的“遵循工程的集成与创新特徵,以强化工程实践能力、工程设计能力与工程创新能力为核心,重构课程体系和教学内容”的人才培养和课程改革要求,并针对第1版套用过程中出现的问题,作者对教材内容进行了较大幅度的调整。
该次修订工作,由高克宁教授组织;具体分工如下:第1、2、5章由高克宁负责,第3、4、9、13章由李金双负责,第6、8、10、11章由柳秀梅负责,第7、12、14、15章由赵长宽负责。案例的编写工作由徐彬和张昱老师完成,得到了雒兴刚教授、张引博士的帮助。
出版工作
2013年8月1日,该教材由清华大学出版社出版。
责任编辑 | 封面设计 | 责任校对 | 责任印製 |
---|---|---|---|
袁勤勇 | 傅瑞学 | 李建庄 | 何芊 |
内容简介
该教材共15章,以C语言为依託,介绍了程式设计的基本方法和技术,以程式设计思想、程式设计语言、程式设计技术和软体工程管理四条主线组织相关内容,主要内容包括计算机及程式设计概述,基本数据类型,常量及变数,运算符与表达式,输入输出,程式控制结构,数组,函式,指针,结构体、共用体与枚举类型,预编译和宏定义,档案,程式设计思想及範例,面向对象程式设计,并行程式设计与MPI,个体软体开发过程管理;并以两个实例的逐步完善讲解贯穿全书。
教材目录
第1章计算机及程式设计概述1 1.1概述1 1.2计算机基本原理1 1.3指令与程式2 1.3.1指令3 1.3.2程式3 1.3.3软体3 1.4计算机套用简介4 1.5程式设计语言5 1.5.1机器语言6 1.5.2彙编语言6 1.5.3高级语言6 1.6问题求解与算法设计8 1.6.1问题求解8 1.6.2算法定义9 1.6.3算法设计10 1.6.4算法的複杂性10 1.6.5伪代码10 1.6.6流程图11 1.6.7NS图12 1.6.8统一建模语言13 1.7程式设计思想13 1.7.1程式设计基本步骤13 1.7.2结构化程式设计14 1.7.3面向对象程式设计15 1.7.4并行程式设计16 1.7.5程式设计思想前沿17 1.8C语言概述17 1.8.1C语言的特点17 1.8.2简单的C程式设计18 1.8.3C语言程式结构20 1.8.4C程式的开发过程21 1.9案例22 1.9.1固体密度测量问题22 1.9.2超市收银系统24 练习题25 第2章基本数据类型、常量及变数26 2.1概述26 2.2信息编码与存储27 2.2.1数值27 2.2.2字元29 2.3标识符30 2.3.1关键字31 2.3.2自定义标识符31 2.4数据类型31 2.4.1整型32 2.4.2实型32 2.4.3字元型33 2.5常量33 2.5.1整型常量33 2.5.2实型常量34 2.5.3字元常量34 2.5.4字元串常量36 2.5.5符号常量36 2.6变数37 2.6.1变数声明37 2.6.2变数初始化39 2.6.3变数赋值40 2.6.4const修饰符41 2.7数据溢出与计算精度41 2.8其他语言的基本数据类型43 2.8.1C++语言的基本类型43 2.8.2Java语言的基本类型43 2.8.3C#语言的基本类型44 2.9数据类型与程式移植45 2.10案例46 2.10.1固体密度测量问题46 2.10.2超市收银系统47 练习题48 第3章运算符与表达式50 3.1概述50 3.2算术运算符与算术表达式51 3.3关係运算符与关係表达式52 3.4逻辑运算符与逻辑表达式53 3.5赋值运算符与赋值表达式54 3.6++/--运算符与自增/自减表达式56 3.7条件运算符与条件表达式57 3.8逗号运算符与逗号表达式58 3.9sizeof运算符58 3.10类型转换59 3.10.1隐式转换59 3.10.2显式转换60 *3.11位运算符和位运算61 3.11.1位逻辑运算61 3.11.2移位运算63 3.11.3複合位运算及补位原则64 3.12表达式运算64 3.13其他语言中的运算符与表达式64 3.14案例65 3.14.1固体密度测量问题65 3.14.2超市收银系统66 练习题67 第4章输入输出68 4.1概述68 4.2printf函式68 4.2.1printf函式的调用格式68 4.2.2printf函式的格式控制字元串70 4.3scanf函式73 4.3.1scanf函式的调用格式73 4.3.2scanf函式的格式控制字元串74 4.4字元输入与输出76 4.5图形输出77 4.5.1图形处理函式78 4.5.2图形界面接口81 4.6案例82 4.6.1固体密度测量问题82 4.6.2超市收银系统83 练习题84 第5章程式控制结构86 5.1概述86 5.2基本语句87 5.2.1表达式语句87 5.2.2函式调用语句88 5.2.3空语句88 5.2.4複合语句88 5.2.5顺序结构套用89 5.3选择控制语句90 5.3.1if语句90 5.3.2if else语句92 5.3.3if…else if语句93 5.3.4switch语句95 5.3.5分支结构套用99 5.4循环控制语句101 5.4.1while语句102 5.4.2for语句104 5.4.3do while语句107 5.4.4循环的本质108 5.4.5几种循环语句的比较110 5.4.6循环结构套用111 5.5其他控制语句113 5.5.1goto语句113 5.5.2break语句114 5.5.3continue语句115 5.5.4goto、break、continue语句的区别115 5.6语句嵌套117 5.6.1条件分支嵌套结构117 5.6.2循环嵌套结构119 5.7案例120 5.7.1固体密度测量问题120 5.7.2超市收银系统122 练习题124 第6章数组126 6.1概述126 6.2一维数组127 6.2.1一维数组定义127 6.2.2一维数组初始化128 6.2.3一维数组引用129 6.2.4一维数组套用130 6.3二维数组132 6.3.1二维数组定义132 6.3.2二维数组初始化133 6.3.3二维数组引用134 6.3.4二维数组套用134 6.4高维数组137 6.5字元数组与字元串138 6.5.1字元数组138 6.5.2字元串139 6.5.3字元串输入输出140 6.5.4常用字元串处理函式142 6.5.5字元数组与字元串套用143 6.6数组与数据存储145 6.6.1一维数组的存储145 6.6.2二维数组的存储146 6.6.3高维数组的存储146 6.6.4字元串的存储147 6.7案例147 6.7.1固体密度测量问题147 6.7.2超市收银系统148 练习题149 第7章函式151 7.1概述151 7.2函式定义153 7.2.1函式返回值153 7.2.2函式定义的通用格式154 7.2.3无返回值函式156 7.2.4有返回值的函式157 7.3函式声明158 7.3.1库函式声明159 7.3.2用户自定义函式声明159 7.4参数传递161 7.4.1形式参数与实际参数161 7.4.2值拷贝传递机制164 7.4.3地址拷贝传递机制166 7.4.4数组作为函式参数167 7.5函式调用169 7.5.1函式调用的一般形式170 7.5.2函式调用的方式171 7.6函式的嵌套调用与递归调用172 7.6.1嵌套调用172 7.6.2递归调用174 7.7变数的作用域和存储类型175 7.7.1局部变数与全局变数176 7.7.2变数的存储类型179 7.7.3变数的生存期与作用域180 7.8内部函式与外部函式181 7.9程式结构182 7.9.1单档案单函式结构182 7.9.2单档案多函式结构183 7.9.3多档案多函式结构184 7.10案例185 7.10.1固体密度测量问题185 7.10.2超市收银系统187 练习题189 第8章指针191 8.1概述191 8.2指针和指针变数192 | 8.2.1指针变数声明192 8.2.2指针变数的赋值及初始化193 8.2.3指针变数的引用193 8.3指针运算194 8.3.1指针运算符194 8.3.2算术运算195 8.3.3关係运算196 8.3.4指针类型转换197 8.4数组和指针198 8.4.1用指针访问数组元素198 8.4.2指向多维数组的指针200 8.5字元串和指针203 8.5.1指针处理字元串203 8.5.2使用字元指针变数与字元数组的区别204 8.6函式和指针206 8.6.1指针作为函式参数206 8.6.2指针作为函式的返回值210 8.6.3指向函式的指针212 8.7指针数组214 8.7.1指针数组定义214 8.7.2带参数的main函式217 8.8数组指针218 8.9指向指针的指针220 8.10记忆体管理221 8.10.1记忆体管理函式221 8.10.2动态记忆体分配套用223 8.11案例227 8.11.1固体密度测量问题227 8.11.2超市收银系统229 练习题231 第9章结构体、共用体与枚举类型233 9.1概述233 9.2结构体类型234 9.2.1结构体定义234 9.2.2结构体变数的声明和初始化235 9.2.3结构体变数的引用238 9.2.4结构体变数作为函式参数和函式返回值240 9.2.5结构体数组241 9.2.6结构体类型指针244 9.3共用体246 9.3.1共用体的定义246 9.3.2共用体变数的声明246 9.3.3共用体变数的赋值和引用247 9.4枚举类型248 9.5类型重定义250 9.6再议数据类型与存储252 9.7鍊表254 9.7.1鍊表定义254 9.7.2鍊表基本操作256 9.8案例258 9.8.1固体密度测量问题258 9.8.2超市收银系统260 练习题262 第10章预编译和宏定义263 10.1概述263 10.2#define命令263 10.2.1不带参数的宏定义263 10.2.2带参数的宏定义265 10.3#include命令268 10.4条件编译270 10.4.1#ifdef…#else…#endif270 10.4.2#ifndef…#else…#endif270 10.4.3#if…#else…#endif271 10.5其他指令272 10.6预定义宏275 10.7案例275 10.7.1固体密度测量问题275 10.7.2超市收银系统277 练习题279 第11章档案280 11.1概述280 11.2文本档案与二进制档案280 11.2.1文本档案281 11.2.2二进制档案281 11.3档案定义282 11.4档案打开与关闭283 11.4.1档案打开283 11.4.2档案关闭285 11.5档案读写285 11.5.1单字元读写286 11.5.2字元串读写287 11.5.3格式化读写288 11.5.4数据块读写290 11.6档案定位函式293 11.6.1fseek函式293 11.6.2rewind295 11.6.3ftell295 11.7档案状态跟蹤295 11.7.1feof函式295 11.7.2ferror函式296 11.7.3clearerr296 11.8案例297 11.8.1固体密度测量问题297 11.8.2超市收银系统299 练习题301 第12章程式设计思想及範例303 12.1概述303 12.2求和/求积问题303 12.2.1多项式计算304 12.2.2数列求和305 12.3遍历问题307 12.4叠代问题312 12.4.1二分法312 12.4.2牛顿叠代法314 12.5排序问题316 12.5.1直接插入排序316 12.5.2起泡法排序317 12.5.3选择排序319 12.6查找问题320 12.6.1顺序查找320 12.6.2折半查找321 12.7递归问题汉诺塔323 12.8字元串处理325 12.8.1字元串长度计算325 12.8.2字元串拷贝326 12.8.3字元串连线326 12.9矩阵运算328 12.9.1矩阵加减运算328 12.9.2矩阵乘法329 12.9.3矩阵转置331 12.9.4高斯消去法求解线性方程组333 12.10栈操作336 练习题338 第13章面向对象程式设计339 13.1概述339 13.1.1模组化设计339 13.1.2代码封装340 13.2面向对象程式设计342 13.3类与对象343 13.3.1类343 13.3.2对象344 13.3.3类在C++中的实现345 13.4面向对象的语言实现347 13.4.1类的继承347 13.4.2属性349 13.4.3方法352 13.4.4虚函式354 13.5面向对象的问题与UML建模356 13.5.1静态建模用例356 13.5.2静态建模类和对象357 13.5.3动态建模活动图358 13.5.4动态建模顺序图359 第14章并行程式设计与MPI367 14.1概述367 14.2并行算法367 14.2.1并行问题367 14.2.2并行算法设计368 14.3并行程式设计369 14.3.1并行程式设计模型369 14.3.2进程369 14.3.3创建进程370 14.3.4讯息传递370 14.4MPI程式设计基础374 14.4.1MPI简介374 14.4.2简单MPI程式设计375 14.4.3MPI函式馆375 14.5MPI初始化与关闭376 14.5.1初始化MPI环境376 14.5.2关闭MPI环境377 14.6MPI讯息传递378 14.6.1获取进程标识378 14.6.2获取通信域内的进程数量378 14.6.3讯息传送379 14.6.4讯息接收379 第15章个体软体开发过程管理388 15.1概述388 15.2编码规範定义388 15.3MPI编码规範389 15.3.1标识符命名规範389 15.3.2函式或过程规範390 15.4ANSI C程式编码规範390 15.4.1代码结构与组织391 15.4.2注释393 15.4.3标识符命名规範395 15.4.4代码风格与排版396 15.5代码重用技术398 15.5.1源程式档案398 15.5.2静态库398 15.5.3动态程式库400 15.5.4组件技术402 15.6软体生命周期模型403 15.7CMM简介405 15.8PSP简介406 15.9PSP0级406 15.9.1计画过程管理407 15.9.2开发过程管理407 15.9.3总结过程管理408 15.9.4PSP0过程文档409 15.9.5PSP0.1级410 15.10软体开发计画412 15.10.1软体开发计画基本内容413 15.10.2制定个体软体开发计画413 15.10.3PSP软体开发计画过程413 15.11PSP1级415 15.11.1规模估算415 15.11.2任务计画416 15.11.3进度计画416 15.12PSP2级417 15.12.1代码评审417 15.12.2设计评审418 15.12.3缺陷预防419 15.12.4PSP2改进419 附录AC语言中的关键字420 附录BASCII码錶421 附录C运算符和结合方向423 参考文献425 |
(注:目录排版顺序为从左列至右列)
教学资源
- 配套教材
该教材有配套的实验与测试教材——《程式设计基础(C语言)实验指导与测试(第2版)》。
书名 | 书号 | 出版社 | 出版时间 | 作者 |
---|---|---|---|---|
《程式设计基础(C语言)实验指导与测试(第2版)》 | 9787302330684 | 清华大学出版社 | 2013.08.01 | 高克宁等 |
- 课程资源
该教材配备的教学网站提供了相关的电子课件、程式原始码、授课讲义、实践指导、程式示例、课程案例、试题库等教学资源等教学资源。
教材特色
该教材为配合“推动基于问题的学习、基于项目的学习、基于案例的学习等多种研究性学习方法,加强学生创新能力训练”的教学改革需要,该次修订增加了专业套用相关的工程性案例和练习题,并对第1版中的内容进行了精简,修订了错误。同时,为适应网路化学习的需要,对课程网站进行全新的设计,突出了“知识点”在课程学习资源组织中的重要作用。
作者简介
高克宁,女,工学博士,东北大学计算中心教育技术与云计算研究所长、教授、中国计算机学会办公自动化专业委员会委员、中国计算机学会高级会员、美国ACM学会会员。主要研究领域为Web信息处理、社会网路。