本书习题库
第1篇C语言程序设计
第1章C语言程序设计概述
1.1引言
1.2程序设计语言的发展历程
1.3软件开发基本过程
1.4算法的表示形式
1.5C语言程序基础知识
1.6C/C++语言程序的编写和运行
小结
习题
第2章基本数据类型及运算
2.1基本数据类型
2.2常量
2.3变量
2.4运算符与表达式
2.5混合运算与类型转换
2.6数据的输入输出
课堂练习题
小结
习题
知识补充与扩展
第3章控制语句
3.1程序的三种基本结构
3.2复合语句
3.3if条件分支语句
3.4switch多路开关语句
3.5for循环
3.6while循环和do...while循环
3.7循环嵌套
3.8break,continue和goto语句
课堂练习题
上机实验
小结
习题
知识补充与扩展
第4章数组和结构
4.1一维数组
4.2二维数组
4.3字符数组
4.4结构及结构变量
4.5结构数组
课堂练习题
上机实验
小结
习题
知识补充与扩展
第5章指针
5.1指针的概念和定义
5.2指针运算
5.3指针和数组
5.4字符串指针
5.5指针数组
课堂练习题
上机实验
小结
习题
知识补充与扩展
第6章函数
6.1函数定义和调用
6.2函数参数传递
6.3函数返回指针
6.4递归函数
课堂练习题
上机实验
小结
习题
知识补充与扩展
第2篇C++语言程序设计
第7章C++语言编程基础
7.1面向对象的三个核心概念
7.2C++语言中的I/O
7.3C++语言中的数据类型
7.4C++语言中的内联函数
7.5函数重载
7.6带默认形参值的函数
7.7C++语言中的动态内存分配和释放
课堂练习题
小结
习题
知识补充与扩展
第8章类与对象
8.1类类型的定义
8.2类成员的访问控制
8.3类类型的使用
8.4构造函数的引入
8.5析构函数的引入
8.6重载构造函数的引入
8.7复制构造函数的引入
8.8对象数组
8.9对象指针
8.10this指针
8.11类类型作为参数类型的三种形式
8.12静态成员
8.13友元机制
8.14类的组合
8.15数据成员的初始化和释放顺序
8.16常对象与常成员
课堂练习题
上机实验
小结
习题
第9章继承、派生与多态
9.1派生类的概念
9.2公有继承
9.3派生类的构造和析构
9.4保护成员的引入
9.5改造基类的成员函数
9.6派生类与基类同名成员的访问方式
9.7私有继承和保护继承
9.8多继承
9.9多态
9.10运算符重载
9.11赋值兼容规则
9.12虚函数
课堂练习题
上机实验
小结
习题
第10章模板、命名空间和异常处理
10.1模板
10.2命名空间
10.3异常处理
课堂练习题
小结
习题
知识补充与扩展
网站推荐
一、 编写背景MOOC(Massive Open Online Courses,大型开放式网络课程,一般称为“慕课”)的兴起,让众多非计算机专业的学生也可以通过网络学习计算机专业课程。为了照顾不同层次的学习者,MOOC的计算机课程虽然通俗易懂,但是深度与难度却不够;而加大深度与难度后,对于没有教师指导与辅导的初学者来说,要学好并能够使用则极为困难,二者不能兼得。因此,对于计算机专业学生来说,通过MOOC学习达到计算机程序设计课程的专业要求,还存在困难。实际情况也显示,不少提前通过MOOC学习达到优秀成绩的学生,在进入同一门专业课程学习时仍然会感觉难度很大,他们对许多问题的认识不到位,甚至是错误的。对于非计算机专业的MOOC学习者来说,要想深入掌握并灵活应用程序设计语言解决问题,还需要专业训练指导和实验实践。对于计算机专业的学生来说,目前程序设计语言仍然采用大量的课时进行基础理论教学,少量的课时进行上机训练。这样做存在的问题是,由于初学者没有上机实践的基础,理论学习太抽象,因此只能死记硬背,不能学以致用;等到了上机训练时一点点问题就会被难倒,无法完成一个简单的上机编程实验。这样很容易打击初学者的信心,从而让他们丧失学习兴趣。有的学校试点所有的课程都在机房上,目的是让学生有更多进行上机训练的机会。但实际情况是,有的教师只是换教室而已,教学方法还和以前相同,问题同样存在;有的教师发现学生一做编程题,问题就很多,教师一节课还没有讲什么,下课时间就到了,结果编程没有指导好,而理论课的时间也没有了。翻转课堂教学法可以很好地解决这个问题。首先,学生可以预习简单的基础理论课程。为了照顾部分自学能力比较差的同学,任课教师提前录制基础理论讲解视频,配合PPT动画和预习检测题(配答案),让学生每周花2个学时的时间自学基础理论。其次,学生可以自由选择最适合自己的资料进行自学,并通过完成简单的预习检测题来检测自己的学习效果。最后,课堂上,教师先通过几分钟的考试来检测学生的预习效果,并根据检测结果,灵活地调整上课内容。如果学生预习效果好,则直接给出应用型的问题引导学生思考、编程解决问题;如果学生预习效果不好,则先进行基础理论的复习,可以只针对难点进行细致地讲解,然后再引导学生理解如何通过编程解决问题的方式灵活地运用基础理论知识解决实际问题。C语言和C++语言既有区别又有联系,具有广泛的应用场合,可以用来编制各种系统软件与应用软件,是大多数学校的计算机专业必修课程,但一般分成2个学期完成教学。这样做带来的问题是,学时数紧张。学生对C语言还没有掌握好,经过1个或者2个学期后再学习C++语言,可能C语言的知识又忘记了,教师还得花时间讲授C语言基础。有的学校只讲授C++语言,学生具备面向对象的编程思想,但对面向过程的编程思想不了解,对于复杂问题的解决存在困难。电子科技大学计算机学院进行试点,将这两门课程进行梳理,合并成一门课程,学时数比以前两门课程的总和少,但是学习效率更高。学生学习了C语言后立刻进行半学期考试,然后再开始C++语言的学习。通过分析二者的区别与联系,可以使学生快速进入C++语言的学习。学生一边学习C++语言面向对象编程思想,一边将C语言的面向过程编程思想使用起来,可以达到较好的学习效果。电子科技大学计算机学院通过两年的实践发现,在有教师辅导和引导的情况下,将所有的上课时间用来进行思考、讨论、编程解决问题,这大大提高了学生课堂积极性和对时间的利用率,达到了很好的学以致用的效果。二、 本书特色(1)C语言与C++语言结合起来学习,所需的学时数量减少。同一个问题在C语言中出现时,用的是面向过程的方法解决;在C++语言中出现时,用的是面向对象的方法解决。学习者可以从中体会面向对象思想的优势,通过对比地学习达到更好的学习效果。(2)可以作为计算机专业学生的翻转课堂教学和MOOC学习者的进一步学习与补充资料。(3)本教材为学习者提供预习资料(预习PPT与预习讲解视频),课堂练习资料(课堂PPT)以及习题库等数字资源,便于学习者学习。(4)本教材是互联网+教材,学习者可以通过扫描书中的二维码观看视频。编者针对初学者(计算机专业和非计算机专业),根据学习内容与进度,提供完整的问题分析、设计、编程、调试过程的视频,学习者可以跟着视频进行编程训练和学习调试技巧。程序设计语言的学习和编程技术的掌握,都必须在大量的编程练习基础上逐渐掌握和提高,即使学习基础理论和观看教师的视频编程过程,在没有编程练习之前只能有一个大概理解,而真正的理解还要在自己做了一些编程练习之后,才能够进行深入掌握。但是如何保障编程练习的数量及品质呢?编者给学习者提供了可以练习的网址,学习者注册后可以根据里面的章节进行编程练习。此外,习题库中还有大量的习题供学习者参考。具体学习方法如下:(1)登录网站。登录北京大学出版社首页,在图书栏目中使用isbn搜索到本书,单击目录中的“本书习题库”后即可进入习题库网站。(2)注册。学习者在注册的时候要选择“教材学习者的练习题: 程序设计(C与C++)”这个班级,等待教师同意。同时,学习者可以通过QQ群(群号: 341588984)提醒教师同意通过教材练习题的注册。(3)学习者在注册通过后,通过“课程中心”下面的“我的课程”,进入“教材学习者的练习题: 程序设计(C与C++)”的作业列表,就可以看到各章作业和练习题。每章作业题量不大,难度居中;但每章练习题的题量较大,难度从简单到较难的程度都有。遇到不会的题目,学习者可以等学完下一章之后再回过头来做。学习者每次提交作业后都可以看到分数及错误提示信息,根据错误提示信息可以多次修改和提交。此外,如果学习者在教材中发现错误或者在学习过程中遇到问题,都可以通过QQ群向教师反馈,或者和QQ群中的成员进行讨论。三、 教学安排本书共10章,除了第1章没有预习资料,其他章均提供预习资料。每一章(除了第1章)都有基础理论学习(预习内容)、课堂练习题(教师在课堂引导学生深入学习的资料)。课程参考学时如下表所示。教材第2~6章介绍C语言与技术部分,第7章介绍C++语言与C语言的主要区别,第8~10章介绍C++语言与技术部分。各章学时安排各章内容基础理论(预习时间)深入与提高(课堂用时)第1章C语言程序设计概述0分钟4学时第2章基本数据类型及运算80分钟4学时第3章控制语句50分钟6学时第4章数组和结构68分钟4学时第5章指针64分钟8学时第6章函数112分钟8学时第7章C++语言编程基础47分钟4学时第8章类与对象80分钟8学时第9章继承、派生与多态93分钟14学时第10章模板、命名空间和异常处理42分钟4学时总学时636分钟(14学时)64学时四、 教学方法本教材可以采用下面两种教学方法。1. 传统教学法第1章的教材内容及对应的PPT可以作为课堂教学内容,教材习题可以作为学生的课后作业。第2~10章,每一章的第一部分为基础理论,可以作为课堂的教学内容;第二部分为课堂练习题,可以作为学生的课后作业。2. 翻转课堂教学法第1章的教材内容及对应的PPT可以作为课堂教学内容,教材习题可以作为学生的课后作业。第2~10章,每一章的第一部分为基础理论(有配套的预习PPT与预习讲解视频),可以作为学生每周的课前预习资料;第二部分为课堂练习题,作为课堂上教师引导学生完成的课堂作业,完成后通过学生展示的方式,共同解答并总结。课堂练习题也提供了参考答案供教师与读者参考,可以通过扫描书中的二维码获得。课堂练习题中前面的题目给出基础理论容易出错的知识点,通常以读程序、查错改错、程序填空等形式给出。在基础知识掌握得比较好之后,教师可以在课堂上给出由浅入深的编程练习题,供学生练习。不同基础的学生可以完成不同的作业题数。五、 致谢本教材由戴波担任主编,陈文宇、丘志杰、卢光辉担任副主编。其中,戴波编写了第1~9章的课堂练习题及答案;陈文宇编写了第1~6章的基础理论;丘志杰编写了第7~10章的基础理论;卢光辉对于全书架构提出了许多宝贵意见,并参与编写了部分章节的案例;张东祥参与编写了第 9~10 章的基础理论部分案例。2016级研究生宋玉为本教材的整理做了不少工作,包括格式调整和图表的绘制。最后,感谢北京大学出版社孙晔副社长及编辑温丹丹老师为本书的出版所做的大量工作。本教材的课堂练习题不少具有启发性、趣味性的C语言题目,采用了苏小红的《C语言程序设计》PPT中的案例;C++的面向对象概念讲解采用了金旭亮的《面向对象软件开发实践》,中国大学MOOC的内容;游戏思想借鉴了Araon Reed的《Learning XNA 4.0》。在此,对本书给予帮助的这些优秀教师及作者表示衷心感谢。方法介绍六、 参考书籍1陈文宇,等.C语言程序设计[M].成都: 电子科技大学出版社,2011.2沈显军,等.C++语言程序设计教程[M].北京: 清华大学出版社,2010.3苏小红,等.C语言程序设计[M].北京: 高等教出版社,2015.4 AraonReed.Learning XNA 40[M].OReilly Media,2011.
本书是“互联网+教材”,学习者可以通过扫描书中的二维码观看视频。针对初学者,编者提供了完整的问题分析、设计、编程、调试过程视频,学习者可以跟着视频进行编程训练和学校调试技巧。此外,本书为学习者提供预习资料、课堂练习题以及习题库等数字资源,便于学习者学习。
本书习题库
电子科技大学计算机软件与工程学院副教授,2013年荣获学校“优秀主讲教师”,2014年荣获学校先进工作者等荣誉。善于采用引导式教学、应用型教学,翻转课堂教学法等多种教学方法引导学生学习实践。参与多项省部级教改项目,发表论文多篇,在机工社、电子科大社共出版教材四部。
本教材一共10章,第1章介绍了软件开发过程及Visual Studio 2015开发环境的使用,第2~6章是C语言基础知识及面向过程技术介绍,第7~10章是C++基础知识及面向对象技术介绍。本教材基础理论浅显易懂,编程案例趣味性强,适合没有编程基础以及学习了C语言或者C++语言,仍然不能根据问题独立编写程序的初学者。
本教材将理论与实践紧密结合,从分析问题,寻找解题思路,再到编程、调试、运行,都借助实际案例进行展开。基础知识及编程过程可以通过扫描二维码观看讲解视频,包括初学者在学习初期常见的编译错误和后期的运行错误,都能够通过视频中的详细演示学会编程方法与调试技术。本教材提供配套PPT、讲解视频、编程习题库及QQ答疑等丰富资源,既适合传统教学使用,也适合翻转课堂教学法的课前预习和课堂编程与讨论;同时,也适合没有教师辅导的独立学习者使用。
本书习题库