国家二级C++机试(选择题)模拟试卷400
选择题
1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDEl2345
D. 54321EDCBA
解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。
2.对于循环队列,下列叙述中正确的是(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加l时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。
3.下列运算符不能重载为友元函数的是( )。(A)
A. = () [] ->
B. + – ++ —
C. > < >= <=
D. += -= *= /=
解析:此题考查的是运算符重载的概念。C++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。
4.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
B
解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A)和选项C),选项D)是整数集合,所以也排除。
5.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。(D)
A. 连接码
B. 关系码
C. 外码
D. 候选码
解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。
6.以下关键字不能用来声明类的访问权限的是( )。(B)
A. public
B. static
C. protected
D. private
解析:类的成员访问权限有3种:public(公用)、protected(保护)、private(私有)。
7.有如下程序:
#include
#include
using namespace std;
class XCD{
char*a;
int b;
public:
XCD(char*aa,int bb){
a=new char[strlen(aa)+1];
strcpy(a,aa);
b=bb;
}
char*Geta(){return a;}
int Getb(){return b;}
};
int main(){
char*p1\\(A)
A. 12
B. 16
C. 14
D. 11
解析:由类XCD的定义可知,成员函数Geta()返回的是字符串的长度,Getb()返回的是参数b的值。在主函数中strlen(x.Geta())的值等于4,y.Getb()的值等于8,所以输出两者的和为12。
8.已知函数print0没有返回值,如果在类中将之声明为常成员函数,正确的是( )。(A)
A. void print()const;
B. const void print();
C. void const print();
D. void print(const);
解析:const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。
9.数据库管理系统中负责数据模式定义的语言是( )。(A)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:数据库管理系统一般提供相应的数据语言,它们分别是:数据定义语言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
10.下列程序用来判断数组中特定元素的位置所在,则输出结果为( )。
#include<conio.h>
#include<iostream.h>
int fun(int*p,int n,int*j)
{int i;
*j=0;
for(i=0;i<n;i++)
if(p[*j]<p[i])*j=i;
return p[*j];}
void main()
{int a[10]={1,3,9,O,8,7,6,5,4,2};int j;
fun(a,10,&j);
cout<<j<<’,’<<a[j];}(A)
A. 2,9
B. 3
C. 9
D. 3,9
解析:由程序中的主函数main入手,调用fun函数。其中第一个实参为数组a的名字,数组名作为实参,传递的是数组的起始地址。所以在fun函数中指针p指向了数组的第一个元素a[0]。另外实参整型j传递的是引用,也就是j的地址。在fun函数中在for循环中,依次将当前元素p[i]与j指针值为标识的p[*j]进行比较,取较大的。最后循环后的结果就是p[*j]存放数组中的最大值,并且指针j为该值的标识位。可以看出数组的最大值是9标识位为2。
11.有如下程序:
#include<iostream>
using namespace std;
class TestClass1
{
public:
TestClass1{cout<<\\(B)
A. TestClass2TestClass1TestClass1~TestClass1~TestClass2~TestClass1
B. TestClass1TestClass2TestClass1~TestClass2~TestClass1~TestClass1
C. TestClass2TestClass1TestClass1~TestClass2TestClas
本文档预览:3600字符,共11373字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载