国家二级C++机试(选择题)模拟试卷498
选择题
1.下列描述中正确的是(D)
A. 一个逻辑数据结构只能有一种存储结构
B. 数据的逻辑结构属于线性结构,存储结构属于非线性结构
C. 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D. 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系:数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。
2.下列字符串中不能作为C++标识符使用的是( )。(D)
A. WHILE
B. user
C. _lvar
D. 9stars
解析:在c++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。
3.模板对类型的参数化提供了很好的支持,因此( )。(B)
A. 类模板的主要作用是生成抽象类
B. 类模板实例化时,编译器将根据给出的模板实参生成一个类
C. 在类模板中的数据成员都具有同样类型
D. 类模板中的成员函数都没有返回值
解析:本题考查类模板的基本概念。类模板的定义和声明都以关键字template开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号“”括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以B选项正确。
4.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
5.有如下程序:
#include
using namespace std;
void fl(int&x){x++;}
void f2(int x){++x;}
int main(){
int x=10,y=12;
f1(x);
f2(y);
cout<<x+y<<endl;
return 0;
}
运行这个程序的输出结果是( )。(B)
A. 22
B. 23
C. 24
D. 25
解析:在函数f1(int&x){x++;}中,是对变量x的引用,所以当在-main函数中执行“fl(x);”语句后,变量x的值等于11,而在函数void f2(int x){++x;)中,对变量x的传递调用,在main函数中执行“f2(y);”语句后,变量y的值仍然等于12,所以输出x+y的值等于23。
6.有如下程序段:
int i=0,j=1;
nt&r=i;//①
r=j;//②
int*p=&i;//③
*p=&r;//④
其中会产生编译错误的语句是( )。(A)
A. ④
B. ③
C. ②
D. ①
解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而,*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。
7.有如下两个类定义:
class AA{);
class BB{
AA vl,*v2;
BB v3:
int*v4;
);
其中有一个成员变量的定义是错误的,这个变量是( )。(C)
A. vl
B. v2
C. v3
D. v4
解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。
8.有如下类定义:
class Sample{
public;
Sample(int x):ref(x){} ∥①
private:
Sample():ref(0){} ∥②
static int val=5; ∥③
const int ref; ∥④
};
上述程序段中,错误的语句是( )。(C)
A. ①
B. ②
C. ③
D. ④
解析:静态整型数据不能定义为类的数据成员。
9.有如下程序:
#include
using namespace std;
class A{
public:
A(int i=0):r1(i){}
void print(){cout<<’E’<<r1<<’-’;}
void print()const{cout<<’C’<<r1*r1<<’-’;}
void print(int x){cout<<’p’<<r1*r1*r1<<’-’;}
private:
int r1;
};
int main(){
A a1;
const A a2(4);
a1.print(2);
a2.print();
return 0;
}
运行时的输出结果是( )。(D)
A. P8-E4
B. P8-C16-
C. P0-E4-
D. P0-C16-
解析:在主函数中创建a1对象时,调用类A的默认构造函数,其数据成员r1的值等于0。当执行a1.print(2)语句时,调用带参数的print成员函数,所以输出结果为p0-,对象a2为常成员,所以其成员变量r1的值等于4,因为常对象只能调用常成员函数,所以当执行语句a2.print()语句时,输出结果为C14-。
10.以下程序的正确运行结果是( )。
#include<iostream.h>
int fun(int);
void main()
{
int a=2,i;
for(i=0;i<3;
本文档预览:3600字符,共9818字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载