国家二级C++机试(选择题)模拟试卷230
选择题
1.若有定义“hat x=4,y=5;”,则表达式“y>x++?x--:y++”的值为( )。(C)
A. 3
B. 4
C. 5
D. 6
解析:在表达式“y>x++?x–:y++”中,由于自加(++)运行符的优前级高于比较运算符(>),所以首先进行自加运算,即变量x的值前自加1,等于5,此时表达式y>x不成立,所以整个表达式的值等于y++的值,由于y++是后自加运算,所以其值等于5。
2.若有以下程序:
#include<iostream>
using namespace std;
class A
{
public:
A(int i,int j)
{
a=i:
b=j;
}
void move(int x,int y)
{
a+=x;
b+=y;
}
void show()
{
cout<<a<<\\(C)
A. 3,4
B. 6,8
C. 6,9
D. 4,3
解析:此题的执行过程如下:首先Bd(3,4);语句调用B类的构造函数:B(int i,int j),B的构造函数中调用基类A的构造函数,使得a=3,b=4;d.fun()会调用函数move(3,5),使得(3,4)和(3,5)的对应部分分别相加,最后输出6,9。
3.字符串“a+b=12\n\t”的长度为( )。(C)
A. 12
B. 10
C. 8
D. 6
解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。
4.对下列二叉树
(C)
A. DYBEAFCZX
B. YDEBFZXCA
C. ABDYECFXZ
D. ABCDEFXYZ
解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:①访问根结点;②前序遍历左子树;③前序遍历右子树。可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是ABDYECFXZ。
5.下列关于C++流的描述中,错误的是( )。(A)
A. cout>>‘A’表达式可输出字符A
B. eof( )函数可以检测是否到达文件尾
C. 对磁盘文件进行流操作时,必须包含头文件fstream
D. 以ios―base::out模式打开的文件不存在时,将自动建立一个新文件
解析:本题考查c++流,想要输出字符“A,则应该是cout<<“A”,所以本题答案为A。
6.在软件设计中不使用的工具是(C)
A. 系统结构图
B. PAD图
C. 数据流图
D. 程序流程图
解析:在软件开发的各个阶段经常会使用到一些图形工具,如在需求分析阶段使用数据流图(DFD图),在概要设计阶段使用系统结构图,在详细设计阶段使用程序流程图、N-S图或者PAD图等。
7.有如下类说明:
class TestClass{
int x:
public:
TestClass(int n){x=n;}
};
class TestClass1:public TestClass{
int y;
public:
TestClass1(int a,int b);
};
在构造函数TestClass1的下列定义中,正确的是( )。
B
解析:题目中程序TestClass为基类,TestClass1为派生类,派生类构造函数的一般形式为:派生类构造函数名(总参数类表):基类构造函数名(参数列表){派生类中新增数据成员初始化语句}。派生类TestClass1的基类函数名为TestClass,总参数为int a,int b,所以选择B)。
8.数据库系统的三级模式不包括( )。(D)
A. 概念模式
B. 内模式
C. 外模式
D. 数据模式
解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。
9.有如下类定义:
class TV{
public:
Tv(int S=41,string br=“TCL”):size(s),brand(br){}
一Tv(){}
private:
int size;
string brand;
};
若执行语句
TV li,*net[2],company[3];
则Tv类的构造函数被调用的次数是( )。(B)
A. 6次
B. 4次
C. 3次
D. 2次
解析:本题考查构造函数和析构函数,题中定义了一个对象以及对象数组,那么构造函数需要执行4次,而,*net[2]并不执行构造函数,所以答案为B。
10.有如下程序:
#include<iostream>
using namespace std;
int main(){
int sum;
for(int i=0;i<6;i+=3){
sum=1;
for(int j=i;j<6;j++)sum+=j;
}
cout<<sum<<endl;
return 0;
}
运行时的输出结果是( )。(D)
A. 3
B. 10
C. 12
D. 15
解析:由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋值,所以外层第二次循环如下:
此时i=3,sum=3内层循环开始如下:j=3,j<6,sum=6;i=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出内层循环。得到sum=15。
11.下面关于虚函数的描述中正确的是( )。(D)
A. 虚函数是一个静态成员函数
B. 虚函数是一个非成员函数
C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义
D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
解析:在基类中用vinual声明成员函数为虚函数,所以AB错误。在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同。
12.生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。(A)
A. 无需任何条件
B. 基类中显示定义了构造函数
C. 派生类中显式定义了构造函数
D. 派生类构造函数明确调用了基类构造函数
解析:因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所以当生成派生类对象
本文档预览:3600字符,共6371字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载