国家二级C++机试(选择题)模拟试卷456
选择题
1.下列有关指针的用法中,错误的是( )。(B)
A. int i;int *p=&i;
B. int i;int *p;i=*p;
C. int *p;p=0;
D. int i=5;int *P;p=&i;
解析:“int i:”语句为定义了一个整型变量i。“int*p”为定义一个整型指针p。选项A中的“int*p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B)中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B错误。选项C中“p=0;”表示p指向0的地址。选项D中“&i”为取i的地址,并赋值给p。
2.按照“后进先出”原则组织数据的数据结构是( )。(B)
A. 队列
B. 栈
C. 双向链表
D. 二叉树
解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另…端称为栈底。栈顶元素总是最后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照“后进先出”(Last In First Out,简称LIFO)或“先进后出”(FirstIn Last Out,简称FILO)的原则组织数据的。因此,栈也称为“后进先出表”或“先进后出”表。
3.执行下列语句段后,输出字符“*”的个数是( )。
for(int i=50;i>1:一i)cout<<‘*’;(B)
A. 48
B. 49
C. 50
D. 51
解析:此题考查的是for循环语句。Fol循环中 i从50开始逐渐递减,直到i:1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最终输出的是49个字符‘*’。
4.某系统总体结构图如下图所示:
(C)
A. 7
B. 6
C. 3
D. 2
解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。
5.程序调试的任务是( )。(D)
A. 设计测试用例
B. 验证程序的正确性
C. 发现程序中的错误
D. 诊断和改正程序中的错误
解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。
6.在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。(C)
A. 需求分析阶段
B. 概念设计阶段
C. 逻辑设计阶段
D. 物理设计阶段
解析:数据库的设计阶段包括需要分析、概念设计、逻辑设计和物理设计,其中将E—R图转换成关系数据模型的过程属于逻辑设计阶段。
7.下列符号中可以用作C++标识符的是( )。(A)
A. _radius
B. foo-bar
C. else
D. 3room
解析:此题考查的是C++语言中标识符的定义。标识符有字母、数字和下划线构成,其第一个字母必须是字母或下划线;定义标识符时,不要采用系统的保留字。
8.有如下程序.
#include
using namespace std;
class A{
public:
virtual void funcl(){cout<<“A1”;)
void func2(){cout<<“A2”;)
};
class B:public A{
public:
void funcl(){cout<<“B1”;)
void func2(){cout<<“B2”;)
};
int main(){
A*p=new B;
p->funcl();
P一>func2();
return 0:
)
运行此程序,屏幕上将显示输出( )。(C)
A. B182
B. A1A2
C. B1A2
D. A182
解析:此题考查的是虚函数的概念。此题中,funcl是虚函数,fhnc2是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=new B;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用funcl时,运行的是派生类的版本,而通过该指针调用func2运行的是基类的版本。所以程序运行的最后输出是:BlA2。
9.下列符号中不属于C++关键字的是( )。(D)
A. friend
B. namespace
C. continue
D. byte
解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字;namespace是定义或使用名字空间时用到的关键字:continue是终止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C++语言中的关键字。
10.有如下类定义:
class Point
{
int x_,y_;
public:
Point():x_(0),y_(0){}
Point(int x,hat y=0):x_(x),y_(y){}
};
若执行语句
Point a(2),b{3},*c[4];
则Point类的构造函数被调用的次数是( )。(C)
A. 2次
B. 3次
C. 4次
D. 5次
解析:此题考查的是类的构造函数。构造函数在对象创建的时候由系统自动调用。在Point a(2),b[3],*c[4]语句中:a(2)是定义一个对象并传入构造函数2,所以此时会调用以此构造函数;b[3]是定义一个包含3个对象的数组,所以构造函数会被调用3次:*c[4]定义的是4个Point类对象指针的数组,它并没有创建任何Point对象,所以不调用构造函数。
11.若MyClass是一个类名,且有如下语句序列
MyClass c1,*c2;
MyClass *c3=new MyClass;
MyClass &c4=c1;
上面的语句序列所定义的类对象的个数是( )。(C)
A. 1
B. 2
C. 3
D. 4
解析:C1、*C2、C3是3个MyClass对象,C4是Mvclass对象的引用,它是对象C1的别名。
12.关于在调用模板函数时模板实参的使用,下列表述正确的是(
本文档预览:3600字符,共6676字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载