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