国家二级(C++)机试模拟试卷273
选择题
1.执行语句序列
int x=1,&y=x;
cout<<x<<‘一’<<y<<endl;
输出结果为( )。(B)
A. X~x
B. 1~1
C. 1一0
D. 异常
解析:程序中的“int x=1”定义x为int型变量,并赋值为1。语句“&y=x”中“&”为引用运算符,&y=x语句可以理解为y具有x的地址,所以v的值也是1,即输出为:1-1。
2.有如下类定义:
class AA
{
int a;
public:
int getRef()const{return&a;}//①
int getValue()const{return a;}//②
void set(int n)const{a=n;}//③
friend void show(AA aa)const{cout<<a;}//④
};
其中四个函数的定义中正确的是( )。(B)
A. ①
B. ②
C. ③
D. ④
解析:本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。
3.有如下程序:
#include<iostream>
using namespace std;
int main()
{
cout.fill(’*’);
cout.width(6);
cout.fill(’#’);
cout<<888<<endl;
return 0:
}
的执行结果是( )。(A)
A. ###888
B. 888###
C. ***888
D. 888***
解析:C++在流操作中,利用cout对象的width属性设置输出字符的宽度,用fill函数来设置需要填充的字符。题目程序中,首先设置填充字符为*,输出宽度为6,但在输出前又设置了填充字符为#,所以在输出时,其填充字符为#,由于888不足6个字符,所以在前面以三个“#”来填充。
4.下列程序的输出结果是( )。
#include
void main()
{int n[][3]={1 0,20,30,40,50,60};int(*p)[3];
p=n;cout<<p[0][0]<<“, ”<<*(p[0]+1)<<”, ”<<(*p)[2]<<endl;
}(B )
A. 10,30,50
B. 10,20,30
C. 20,40,60
D. 10,30,60
解析:如果数组元素都是相同类型的指针,则称这个数组为指针数组。指针数组一般用于处理二维数组。声明的格式为:。p表示指向数组n的行指针,初始化“(*p)[3]=n;”,地址的等价形式:p+i、p[i]、*p+i)都表示数组第i+1行的第1个元素的首地址。*(p+i)+j、p[i]+j、&p[i]D]都表示数组第i+1行、第.;+1列元素的地址。他的等价形式:+(+(p+i)+j)、*(p[i]+j)、p[i]D]都表示数组第i+1、第j+1列元素的值。所以本题中分别访问数组元素p[0][0],p[0][1],p[0][2]。
5.有如下程序:
#include<iostream>
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Piano:public Instrument{
public:
void Display(){/*函数体略*/}
};
int main(){
Instrument S;
Instrument*P=0;
//…;
return 0;
}
下列叙述中正确的是( )。(B)
A. 语句“Insturment*P=0;”编译时出错
B. 语句“Instrument s;”编译时出错
C. 类Piano中的Display函数不是虚函数
D. 类Instrument是一个虚基类
解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类不能被实例化,所以语句“Instrument s;”在编译时出错。
6.有以下程序段:
#include
#define MAX(x,y)(x)>(y)?(x):(y)
void main()
{int i j,k;
i=10;
j=15;k=MAX(i,j)*10;
cout<<k<<end1;
}
程序执行后的输出结果是( )。(C)
A. 15
B. 100
C. 150
D. 10
解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i=10,j=15时,“MAX(i,j)”的值为15,所以“k=MAX(ij)*10;”答案为:150。
7.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
8.有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){++count;}
~MyClass(){–count;}
static int getCount(){return count;}
private:
<本文档预览:3600字符,共14816字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载