国家二级C++机试(选择题)模拟试卷469
选择题
1.有如下程序:
#include<iostream>
using namespace std;
int main()
{
char str[100],*p;
cout<<”Please input a string:”;
cin;str;
p=str;
for(int i=0;木p!=‘\0’;p++,i++);
cout<<“i”<<endl;
return 0:
}
运行这个程序时,若输入字符串为:
abcdefg abcd
则输出结果是( )。(A)
A. 7
B. 12
C. 13
D. 100
解析:此题考查的是默认输入格式。本题输入数据类型为char,因此输入的数据是“从第一个非守『1字符开始到卜一个空白字符结束”,而输入数据为abcdefg abcd,其中abcde堙后有窄格。所以输入后str中的字符串为“abcdefg”;主函数中接下来for语句的作用是计算字符串p的长度,故最终输出字符串“abcdefg”的长度7。
2.下列关于类定义的说法中,正确的是( )。(A)
A. 类定义中包括数据成员和函数成员的声明
B. 类成员的缺省访问权限是保护的
C. 数据成员必须被声明为私有的
D. 成员函数只能在类体外进行定义
解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。
3.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。(B)
A. 提高耦合性降低内聚性有利于提高模块的独立性
B. 降低耦合性提高内聚性有利于提高模块的独立性
C. 耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D. 内聚性是指模块间互相连接的紧密程度
解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。
4.有如下程序:
#include
using namespace std;
class test{
private:
int a:
public:
test0{cout+”constructor”+endl;}
test(int a){cout+a+endl;)
test(const test&test)
{
a=test.a:
cout+“copy constructor”+endl;
)
test(){Cout+”destructor”+endl;)
);
int main()
{
test A(3);
return 0:
}
运行时输出的结果是( )。(D)
A. 3
B. constructor
destructor
C. copy constructor
destructor
D. 3
destructor
解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象A是会隐含调用test(int a)这个构造函数,输出3:接着主函数结束,对象A销毁又隐含调用~test()析构函数输出destructor。
5.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是(C)
A. 测试
B. 设计
C. 可行性研究
D. 实现
解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。
6.有如下程序:
#include
using namespace std;
class XA{
int a;
public:
static int b:
XA(int aa):a(aa){b++;)
~XA(){}
int get0{return a;}
);
int XA::b=0;
int main() {
XA d1(2),d2(3);
cout<<d1.get0+d2.get0+XA::b<<endl;
return 0:
}
运行时的输出结果是( )。(C)
A. 5
B. 6
C. 7
D. 8
解析:执行xA类的实例变量d1(2)时,成员函数d1.get()的返回值等于2,xA.b的值等于1,执行xA类的实例变量d2(3)时,成员函数d1.get()的返回值等于3,xA-b的值等于2,所以输出结果为2+3+2=7。
7.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )。(B)
A. 并
B. 交
C. 投影
D. 笛卡儿乘积
解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。形式定义如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改变关系表中的属性个数,但能减少元组个数的是关系表之间的交操作。
8.函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[0]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为( )。(D)
A. 1,1
B. 1,2
C. 2,2
D. 2,1
解析:如果函数实参是数组名,形参也应为数组名,函数swap中形参进行了交换,实际上也是实参进行了交换。而且数组名代表数组首元素的地址,并不代表数组的全部元素。所以,swapfb,2)是数组b第一个元素与第二个元素进行交换,即b[0]与b[1],根据题干,知道答案为2,1。
9.下列关于继承方式的描述中,错误的是( )。(D)
A. 如果不显式地指定继承方式,缺省的继承方式是私有(private)
B. 采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C. 采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D. 采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
解析:基类中的私有成员在派生类中
本文档预览:3600字符,共8189字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载