国家二级C++机试(选择题)模拟试卷186
选择题
1.下列描述中正确的是(D)
A. 数据的逻辑结构与存储结构必定是一一对应的
B. 由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
C. 程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构
D. 以上三种说法都不对
解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等。
2.下列对队列的描述中正确的是( )。(D)
A. 队列属于非线性表
B. 队列按“先进后出”原则组织数据
C. 队列在队尾删除数据
D. 队列按“先进先出”原则组织数据
解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾:允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。
3.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 循环队列中的元素个数不会变化
解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。
4.下列关于软件工程的描述中正确的是( )。(C)
A. 软件工程只是解决软件项目的管理问题
B. 软件工程主要解决软件产品的生产率问题
C. 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D. 软件工程只是解决软件开发中的技术问题
解析:软件工程是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程主要思想是强调在软件开发过程中需要应用工程化原则。
5.有如下两个类定义:
classAA{};
class BB{
AA v1,*v2;
BB v3;
int*v4;
};
其中有一个成员变量的定义是错误的,这个变量是( )。(C)
A. v1
B. v2
C. v3
D. v4
解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类BB时,不能包括其对象v3。
6.下列对于软件测试的描述中正确的是( )。(C)
A. 软件测试的目的是证明程序是否正确
B. 软件测试的目的是使程序运行结果正确
C. 软件测试的目的是尽可能多地发现程序中的错误
D. 软件测试的目的是使程序符合结构化原则
解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。
7.下列语句中,错误的是( )。(B)
A. const int buffer=-256;
B. constant temp;
C. const double *point;
D. const double *it=new double(5.5);
解析:符号常量声明语句的语法格式是:const类型名符号常量=初值表达式,选项B中未给常变量赋初值,故错误;而选项C中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。
8.若字符指针p所指向的字符串为\\(B)
A. 9
B. 8
C. 7
D. 6
解析:字符指针p所指向的字符串为”abcdefg”,所以函数strlen(p)的值等于7,再加l,等于8。
9.有如下程序:
#include
Using namespace std;
Class Amount{
int mount;
public;
Amount(int n=0):amount(n){}
Int getAmountoconst{return amount;}
Amount&operator+=(Amount a){
amount+=a.amount;
return ;
}
};
int main(){
Amount x(3),y(7);
X+=y;
cout<<x.getAmount()<<endl;
return 0;
}
已知程序的运行结果是10,则下划线处缺失的表达式是( )。(A)
A. *this
B. this
C. &amount
D. amount
解析:比题考查的是“+”运算符重载和this指针。语句锄amount+=a.锄ount;实现3和7的求和得到amount=10,要使程序的输出结果为10,又因为函数的返回值类型为Amount&,所以横线处填入*this。
10.有如下程序:
#inc1ude <iostream>
using namespace std;
c1ass AA{
intn;
public:
AA(int k):n(k){}
int get0 {return n;}
int get()const{retum n+1;)
};
int main()
{
AA a(5);
const AA b(6);
eout<e_a.get()<<b.get();
return 0;
}
执行后的输出结果是( )。(B)
A. 55
B. 57
C. 75
D. 77
解析:此题考查的是常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函
本文档预览:3600字符,共7208字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载