
程式设计基础(C语言)(第3版)
《程式设计基础(C语言)(第3版)》是由高克宁等编着,2018年清华大学出版社出版的“十二五”普通高等教育本科国家级规划教材、高等学校计算机基础教育规划教材、教育部-英特尔精品课程配套教材、辽宁省精品课程配套教材。该教材适合作为高等学校程式设计基础课程的教材,也可供程式设计爱好者学习。
该教材介绍程式设计的基本方法和技术,全书共15章,以程式设计思想、程式设计语言、程式设计技术和软体工程管理四条主线组织内容。
基本介绍
- 书名:程式设计基础(C语言)(第3版)
- 作者:高克宁、李金双、赵长宽、柳秀梅、徐彬
- ISBN:9787302488439
- 类别:“十二五”普通高等教育本科国家级规划教材
- 页数:489页
- 出版社:清华大学出版社
- 出版时间:2018年1月1日
- 装帧:平装
- 开本:16开
- 字数:733千字
- CIP核字号:2017284894
成书过程
修订情况
该教材由高克宁教授主编,副主编有李金双、赵长宽、柳秀梅和徐彬。其中第1章由高克宁编写,第2~5章由李金双编写,第7、12、14、15章由赵长宽编写,第6、9、11章由柳秀梅编写,第8、10、13章由徐彬编写。高克宁、赵长宽负责全书的统稿。
出版工作
2018年1月1日,该教材由清华大学出版社出版。
责任编辑 | 封面设计 | 责任校对 | 责任印製 |
---|---|---|---|
袁勤勇、战晓雷 | 常雪影 | 焦丽丽 | 李红英 |
内容简介
该教材共分15章。第1章按照计算设备的发展过程,介绍图灵机及现代计算机的工作原理、问题求解与算法以及主流的程式设计思想和程式设计语言。第2章从信息编码与存储着手,介绍基本标识符、数据类型、常量和变数。第3章从数值计算角度出发,介绍运算符、表达式、输入输出函式馆、数值计算函式馆以及基本程式设计语句。第4章重点介绍逻辑运算与选择结构及其实现。第5章介绍叠代逻辑与循环结构及其实现。
第6章从集合数据处理角度介绍数组、字元串及其实现。第7章从分工和重用角度介绍函式以及基于多档案的程式结构。第8章从地址角度介绍如何通过指针处理数据和指令。第9章围绕複杂数据结构的表示形式,介绍结构体、共用体和线性鍊表。第10章介绍预编译处理及其程式移植和泛化编程。
第11章从数据永久存储角度介绍档案和常用函式。第12章汇总了常见问题的求解算法。第13章从代码和数据封装的角度介绍面向对象的程式设计思想。第14章从高性能计算角度介绍并行程式设计的基本思想以及MPI、OpenMP和多执行绪技术。第15章从培养合格程式设计人员的角度介绍程式设计规範和代码重用技术,并引入软体工程的概念,初步介绍个体软体过程(PSP)。
教材目录
第1章计算机及程式设计概述11.1概述1 1.2计算与机器2 1.2.1计算器2 1.2.2机械式计算机2 1.2.3图灵机模型3 1.2.4电子数字计算机4 1.3指令与程式5 1.4计算机的典型套用6 1.5程式设计语言7 1.5.1机器语言8 1.5.2彙编语言8 1.5.3高级语言9 1.6问题求解与算法11 1.6.1算法定义12 1.6.2算法複杂性12 1.7算法描述13 1.7.1伪代码13 1.7.2流程图14 1.7.3NS图15 1.8程式设计15 1.8.1基本步骤15 1.8.2结构化程式设计16 1.8.3面向对象程式设计17 1.8.4并行程式设计17 1.8.5程式设计思想前沿18 1.9C语言简介18 1.9.1C语言的特点18 1.9.2简单的C程式设计19 1.9.3C语言程式结构21 1.9.4C程式设计过程23 1.10案例24 练习题25 第2章信息编码与数据类型27 2.1概述27 2.2二进制与信息编码27 2.2.1整数编码27 2.2.2实数编码28 2.2.3字元编码29 2.3标识符和关键字30 2.3.1标识符构成30 2.3.2关键字30 2.3.3自定义标识符31 2.4基本数据类型31 2.4.1整数类型33 2.4.2实数类型34 2.4.3字元类型34 2.4.4逻辑类型36 2.4.5複数类型36 2.5常量37 2.5.1整型常量37 2.5.2实型常量38 2.5.3字元常量38 2.5.4字元串常量39 2.5.5逻辑常量40 2.5.6複数常量40 2.5.7符号常量41 2.6变数41 2.6.1变数声明42 2.6.2变数初始化43 2.6.3变数赋值44 2.6.4变数读写45 2.7案例45 练习题46 第3章基本运算与顺序结构48 3.1概述48 3.2运算符与表达式48 3.3赋值运算50 3.4算术运算51 3.4.1基本算术运算51 3.4.2自增或自减运算52 3.4.3整数运算53 3.4.4实数运算55 3.4.5複合赋值运算56 3.5字元运算56 3.5.1算术运算56 3.5.2字元分类57 3.5.3字元转换58 3.6位运算58 3.6.1位逻辑运算58 3.6.2位移运算60 3.6.3複合位运算及补位原则61 3.7逗号运算61 3.8强制类型转换62 3.8.1算术运算中的隐式转换62 3.8.2赋值运算中的隐式转换62 3.8.3显式转换63 3.9sizeof运算64 3.10标準设备输入输出库64 3.10.1字元输入输出函式65 3.10.2格式化输出函式66 3.10.3格式化输入函式72 3.11数学库76 3.11.1实数计算函式76 3.11.2複数运算函式77 3.12基本语句78 3.12.1标籤语句78 3.12.2空语句78 3.12.3声明语句79 3.12.4表达式语句79 3.12.5複合语句79 3.13顺序结构80 3.14案例82 练习题83 第4章逻辑判断与选择结构85 4.1概述85 4.2关係运算85 4.3逻辑运算86 4.4条件运算88 4.5if语句89 4.5.1单分支选择结构89 4.5.2双分支选择结构91 4.5.3多分支选择结构93 4.6switch语句96 4.7选择结构嵌套101 4.8案例106 练习题108 第5章叠代计算与循环结构109 5.1概述109 5.2while语句110 5.3do…while语句112 5.4for语句115 5.5循环语句对比118 5.6循环嵌套119 5.7跳转控制语句124 5.7.1break语句124 5.7.2continue语句126 5.7.3goto语句126 5.7.4continue、break、goto语句的区别128 5.8案例129 练习题131 第6章集合数据与数组133 6.1概述133 6.2一维数组134 6.2.1一维数组定义134 6.2.2一维数组初始化135 6.2.3一维数组引用136 6.2.4一维数组套用137 6.3二维数组140 6.3.1二维数组定义141 6.3.2二维数组初始化142 6.3.3二维数组引用143 6.3.4二维数组套用143 6.4高维数组147 6.5字元数组与字元串149 6.5.1字元数组149 6.5.2字元串151 6.6字元串处理函式155 6.6.1字元串标準输入输出函式155 6.6.2字元串输入输出函式157 6.6.3字元串複製函式158 6.6.4字元串连线函式159 6.6.5字元串比较函式159 6.6.6字元串检索函式160 6.6.7字元串转换函式162 6.6.8其他字元串常用函式162 6.6.9宽位元组型字元串函式163 6.7数组新特性164 6.8案例165 练习题166 第7章模组化与函式168 7.1概述168 7.2函式定义170 7.2.1函式定义形式170 7.2.2函式返回值与函式类型173 7.3函式声明、头档案的使用和库函式声明176 7.3.1函式声明176 7.3.2头档案的使用177 7.3.3库函式声明178 7.4参数传递180 7.4.1形式参数180 7.4.2实际参数182 7.4.3值複製传递机制183 7.4.4地址複製传递机制185 7.4.5数组参数新特性189 7.5函式调用190 7.5.1函式调用形式190 7.5.2嵌套调用191 7.5.3递归调用192 7.6源程式档案与函式分类194 7.6.1外部函式194 7.6.2内部函式195 7.6.3内联函式196 7.7变数存储类型197 7.7.1普通变数197 7.7.2暂存器变数197 7.8变数作用域198 7.8.1局部变数199 7.8.2全局变数200 7.8.3静态变数203 7.8.4变数访问控制204 7.9源程式结构205 7.9.1单档案单函式结构205 7.9.2单档案多函式结构206 7.9.3多档案多函式结构206 7.10案例208 练习题210 第8章地址操作与指针212 8.1概述212 | 8.2指针和指针变数213 8.2.1指针变数声明213 8.2.2指针变数的赋值及初始化214 8.2.3指针变数的引用214 8.3指针运算215 8.3.1取地址与取值运算216 8.3.2算术运算216 8.3.3关係运算218 8.3.4指针类型转换218 8.4数组和指针220 8.4.1用指针访问数组元素220 8.4.2指向多维数组的指针221 8.5字元串和指针224 8.5.1指针处理字元串224 8.5.2使用字元指针变数与字元数组的区别225 8.6函式和指针227 8.6.1指针作为函式参数227 8.6.2指针作为函式的返回值232 8.6.3指向函式的指针233 8.7指针数组236 8.7.1指针数组定义236 8.7.2带参数的main函式239 8.8数组指针241 8.9指向指针的指针242 8.10记忆体访问控制244 8.11案例245 练习题249 第9章複杂数据类型与结构体251 9.1概述251 9.2结构体类型252 9.2.1结构体类型定义253 9.2.2结构体类型变数声明与初始化254 9.2.3结构体变数的引用257 9.2.4结构体数组259 9.2.5结构体与函式262 9.2.6结构体类型指针264 9.3共用体267 9.4枚举类型269 9.5类型重定义271 9.6日期和时间273 9.7鍊表274 9.7.1鍊表定义274 9.7.2动态记忆体管理函式275 9.7.3鍊表的基本操作279 9.8结构体新特性283 9.9案例285 练习题290 第10章泛化编程与预编译292 10.1概述292 10.2#define指令292 10.2.1不带参数的宏定义292 10.2.2带参数的宏定义294 10.3#include指令297 10.4条件编译299 10.4.1#ifdef … #else …#endif299 10.4.2#ifndef … #else …#endif299 10.4.3#if … #else …#endif300 10.5其他指令302 10.6预定义宏305 10.7异常处理305 10.8程式移植307 10.9案例308 练习题310 第11章数据存储与档案312 11.1概述312 11.2文本档案与二进制档案313 11.2.1文本档案313 11.2.2二进制档案313 11.3档案类型314 11.4档案打开与关闭315 11.4.1档案打开315 11.4.2档案关闭318 11.5档案读写319 11.5.1单字元读写319 11.5.2字元串读写322 11.5.3格式化读写323 11.5.4数据块读写325 11.6档案定位函式328 11.7档案状态跟蹤330 11.8其他档案操作函式332 11.9案例334 练习题338 第12章程式设计思想及範例 340 12.1概述340 12.2求和/求积问题340 12.2.1多项式求和341 12.2.2数列求和342 12.3遍历问题344 12.4叠代问题350 12.4.1二分叠代法350 12.4.2牛顿叠代法352 12.5排序问题354 12.5.1直接插入排序355 12.5.2起泡排序357 12.5.3选择排序359 12.6查找问题361 12.6.1顺序查找361 12.6.2折半查找362 12.7递归问题364 12.8矩阵运算367 12.8.1矩阵加/减运算367 12.8.2矩阵乘法368 12.8.3矩阵转置370 练习题371 第13章面向对象与C++基础373 13.1概述373 13.1.1结构化程式设计373 13.1.2模组封装与访问控制374 13.2面向对象程式设计376 13.3类与对象376 13.3.1类376 13.3.2对象378 13.3.3类在C++中的实现378 13.3.4成员变数384 13.3.5成员函式386 13.3.6构造函式和析构函式390 13.3.7函式重载392 13.3.8运算符重载394 13.3.9静态成员变数396 13.3.10静态成员函式398 13.4继承与多态400 13.4.1类继承400 13.4.2多态性与虚函式403 13.5案例407 练习题408 第14章高性能计算与并行程式设计409 14.1概述409 14.2并行算法409 14.2.1并行问题409 14.2.2并行算法设计410 14.3并行程式设计实现411 14.3.1并行程式设计模型411 14.3.2进程412 14.3.3创建进程412 14.3.4讯息传递413 14.4MPI程式设计基础416 14.4.1MPI简介416 14.4.2简单MPI程式设计417 14.4.3MPI初始化与关闭417 14.4.4MPI函式馆419 14.4.5MPI讯息传递420 14.5多核CPU与多执行绪428 14.5.1多核CPU428 14.5.2执行绪430 14.6OpenMP与多核程式设计431 14.6.1OpenMP简介431 14.6.2OpenMP并行程式结构431 14.6.3parallel节433 14.6.4for节434 14.6.5其他节435 14.6.6共享变数与信息传递436 14.7多执行绪技术437 14.7.1执行绪函式馆简介437 14.7.2Win32执行绪函式馆437 14.7.3C11标準执行绪函式馆444 练习题451 第15章个体软体过程管理453 15.1概述453 15.2编码规範定义454 15.3MPI编码规範454 15.3.1标识符命名规範455 15.3.2函式或过程规範455 15.4ANSI C程式编码规範456 15.4.1代码结构与组织456 15.4.2注释458 15.4.3标识符命名规範460 15.4.4代码风格与排版461 15.5代码重用技术462 15.5.1源程式档案463 15.5.2静态库463 15.5.3动态程式库465 15.5.4组件技术467 15.6软体生命周期模型简介468 15.7CMM简介470 15.8PSP简介470 15.9PSP0级471 15.9.1计画过程管理472 15.9.2开发过程管理472 15.9.3总结过程管理473 15.9.4PSP0过程管理文档474 15.9.5PSP0.1级475 15.10软体开发计画477 15.10.1软体开发计画基本内容477 15.10.2制定个体软体开发计画478 15.10.3PSP软体开发计画过程管理479 15.11PSP1级479 15.11.1规模计算480 15.11.2任务计画480 15.11.3进度计画481 15.12PSP2级481 15.12.1代码评审482 15.12.2设计评审483 15.12.3缺陷预防483 15.12.4PSP2级的改进483 练习题483 附录AASCII码錶485 附录B运算符和结合方向486 参考文献488 |
(注:目录排版顺序为从左列至右列)
教学资源
- 配套教材
该教材有配套的实验与测试教材——《程式设计基础(C语言)实验指导与测试(第3版)》,内容包括分别是实验指导、基本概念测试和工程案例等。
书名 | 书号 | 出版社 | 出版时间 | 作者 |
---|---|---|---|---|
《程式设计基础(C语言)实验指导与测试(第3版)》 | 9787302498537 | 清华大学出版社 | 2018.05.01 | 高克宁等 |
- 课程资源
该教材提供全部教学PPT教学课件、习题答案、教学计画、教学讲义(中英文)、教学素材、教学例题与案例、教学视频、线上测试系统等数字资源。
教材特色
- 该教材围绕程式设计能力培养,从程式设计思想、语言、技术和工程管理四个方面组织内容,以结构化程式设计思想为主,兼顾面向对象程式设计和并行程式设计;程式实现以C语言为主,介绍了C11标準,同时介绍其他语言的相应处理;从分解与重用的角度阐述函式、档案、库、组件等相关技术,从高性能计算的角度介绍MPI并行程式设计技术;从编码规範入手引入个体软体过程管理;
- 在教材内容编排模式上,採用将完整案例分解,逐级深入,引导学生有序地用程式设计思想解决实际工程问题;
- 配套实验与测试教材以知识点为单元组织线上资源,利用思维导图将知识点有机地联繫到一起;从高度、广度、深度三个方面立体展示了课程知识网路;
- 该教材中的部分程式要求採用支持C11标準的编译器,建议使用GCC4.9.2或更新版本。
作者简介
高克宁,女,工学博士,东北大学计算中心教育技术与云计算研究所长、教授、中国计算机学会办公自动化专业委员会委员、中国计算机学会高级会员、美国ACM学会会员。主要研究领域为Web信息处理、社会网路。