《C++程序设计》习题解答
第1章 C++概述
1.填空题
(1)在面向对象程序设计中,对象是由___________、___________和___________封装在一起构成的实体。
(2)在面向对象程序设计中,类是具有________________和___________的对象的集合,它是对一类对象的抽象描述。
(3)面向对象程序设计最突出的特点就是___________、___________和___________。 (4)C++语言包含头文件的格式有两种,即_______________和__________________。 (5)C++源程序要经过________、_________、________和_________四个环节,才能在屏幕上显示结果。
(6)每个C++程序都从________函数开始执行。
(7)每个函数体都以________开始,以________结束。 (8)C++程序中的每条语句以________结束。
(9)C++程序的头文件和源程序的扩展名分别为__________和_________,目标程序的扩展名为__________,可执行程序的扩展名为__________。
(10)在C++程序中使用基本输入/输出语句需包含的头文件是________________,应放在程序的________________。
(11)在C++程序中注释语句有_______________和______________两种格式。 (12)C++程序的续行符为_________。
(13)如果从键盘输入语句给变量X,则输入函数的形式为_____________;如果再将变量X的值显示在屏幕上,其输出函数的形式为_____________。 (14)C++程序中的“endl”在输出语句中起___________作用。 参考答案:
(1)对象名,一组属性数据,一组操作 (2)相同属性数据,操作 (3)封装性,继承性,多态性
(4)#include<文件名.扩展名>,#include\文件名.扩展名\(5)编辑,编译,连接,运行 (6)主函数 (7){、} (8)分号;
(9).h,.cpp,.obj,.exe
(10)#include
(13)cin>>X、cout< 2.选择题 (1)面向对象程序设计把数据和( )封装在一起。 A. 数据隐藏 B. 信息 C. 数据抽象 D. 对数据的操作 (2)C++源程序的扩展名是( )。 A. c B. exe C. cpp D. pch (3)把高级语言程序转换为目标程序需使用( )。 A. 编辑程序 B. 编译程序 C. 调试程序 D. 运行程序 (4)C++语言与C语言相比最大的改进是( )。 A. 安全性 B. 复用性 C. 面向对象 D. 面向过程 (5)以下叙述不正确的是( )。 A. C++程序的基本单位是函数 B. 一C++程序可由一个或多个函数组成 C. 一个C++程序有且只有一个主函数 D. C++程序的注释只能出现在语句的后面 参考答案: (1)D (2)C (3)B (4)C (5)D 3.简答题 (1)试比较面向对象程序设计、结构化程序设计和模块化程序设计。 (2)解释以下概念: 类 对象 封装 数据抽象 继承 多态 (3)简述C++语言有哪些特点。 参考答案: (1)结构化程序设计强调从程序结构和风格上研究程序设计。结构化程序设计的程序代码是按顺序执行的,有一套完整的控制结构,函数之间的参数按一定规则传递,不提倡使用全局变量,程序设计的首要问题是“设计过程”。 模块化程序设计将软件划分成若干个可单独命名和编址的部分,称之为“模块”。模块化程序设计的设计思路是“自顶向下,逐步求精”,其程序结构是按功能划分成若干个基本模块,各模块之间的关系尽可能简单,在功能上相对独立。模块和模块之间隔离,不能访问模块内部信息,即这些信息对模块外部是不透明的,只能通过严格定义的接口对模块进行访问。模块化程序设计将数据结构和相应算法集中在一个模块中,提出了“数据结构+算法=程序设计”的程序设计思想。模块化能够有效地管理和维护软件研发,能够有效地分解和处理复杂问题。但它仍是一种面向过程的程序设计方法,程序员必须时刻考虑所要处理数据的格式,对不同格式的数据做相同处理或对相同数据格式做不同处理都要重新编程,代码可重用性不好。 面向对象程序设计面对的是一个个对象,用一种操作调用一组数据。把数据和有关操作封装成一个对象。各个对象的操作完成了,总的任务也就完成了。他适用于编写大型程序。结构化程序设计和模块化程序设计适用于比较小的程序,他要求细致的描写程序设计的每个细节。 (2)类:在面向对象程序设计中,类是具有相同属性数据和操作数据的函数的封装,它是对一类对象的抽象描述。 对象:在面向对象程序设计中,对象是由对象名、一组属性数据和一组操作封装在一起构成的实体。其中属性数据是对象固有特征的描述,操作是对这些属性数据施加的动态行为,是一系列的实现步骤,通常称之为方法。 封装:封装是一种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操作集中在一起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类的外部接口,用户可以访问。 数据抽象:抽象的作用是表示同类事物的本质,c++中的数据类型就是对一批具体的数的抽象。类是对象的抽象,对象是类的特例。 继承:在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操 作。 多态:在面向对象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即一个函数名可以对应多个不同的实现部分。 (3)面向对象程序设计最突出的特点就是封装性、继承性和多态性。 ① 封装性 封装是一种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操作集中在一起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类的外部接口,用户可以访问。类通过接口与外部发生联系,用户只能通过类的外部接口使用类提供的服务,而内部的具体实现细节则被隐藏起来,对外是不可见的。 ② 继承性 在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操作。已有的类称为基类或父类,继承基类而产生的新建类称为基类的子类或派生类。由父类产生子类的过程称为类的派生。通过继承,程序可以在现有类的基础上声明新类,即新类是从原有类的基础上派生出来的,新类将共享原有类的属性,并且还可以添加新的属性。继承有效地实现了软件代码的重用,增强了系统的可扩充性。 ③ 多态性 在面向对象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即一个函数名可以对应多个不同的实现部分。在调用同一函数时,由于环境的不同,可能引发不同的行为,导致不同的动作,这种功能称为多态。它使得类中具有相似功能的不同函数可以使用同一个函数名。多态既表达了人类的思维方式,又减少了程序中标识符的个数,方便了程序员编写程序。多态是面向对象程序设计的重要机制。 4.编程题 编写程序在屏幕上显示字符串“欢迎大家学习C++语言!”,并按照书中介绍练习C++语言的上机实现过程。 参考答案: #include 第2章 C++程序设计基础 1.填空题 (1)Visual C++中如果一个变量为int型,它所占的内存空间是________字节,_______位。 (2)short int型变量占用的内存空间是________字节,long int型变量占用的内存空间是________字节,char型变量占用的内存空间是________字节,float型变量占用的内存空间是________字节,double型变量占用的内存空间是________字节。 (3)bool类型数据的值为非0时会自动转换成________,如果等于0会自动转换成________。 (4)C++程序中的关系运算符满足条件时返回________,不满足条件时返回________。 (5)表达式x&&y>=z是________类型的表达式;表达式x+y||z是________类型的表达式。 (6)表达式1<3&&5<7的值是________,表达式!(5<8)||2<6的值是________。 (7)表达式a+b a>b?max=a:max=b ________________________ y=x*-y ________________________ (x-y)= =(x-z) ________________________ y=x^2 ________________________ x*=y+1 ________________________ (9)以下程序的功能是:从键盘输入一个字符,判断其是否是字母,并输出相应信息,请填空。 #include char c; cin>>c; if((c>='a' _____ c<='z') ___ (c>='A' _____ c<='Z')) cout<<\接收的是一个字母\else cout<<\接收的不是一个字母\ } (10)以下程序的输出结果是________。 #include int i=0,j=0; while(i<15) { j++; i+=++j; } cout< } (11)以下程序的功能是:在屏幕上同一行显示1-9的平方的值,请填空。 #include unsigned int i; for ________________ cout< (12)以下程序的功能是:求一组(10个)正数中的最大数,当输入为负数时提前结束程序,请填空。 #include const int N=10; int x,max=0; cout<< \for(int i=1;i<=N;i++) { cin>>x; if(________________ ) { max=x; continue; } else if(______________) __________________ } cout<<\} (13)以下程序的输出结果是____________。 #include int i=0; while(++i) { if(i= =10) break; if(i%3!=1) continue; cout<