国家二级(C++)机试模拟试卷293
选择题
1.下列有关内联函数的叙述中,正确的是( )。(C)
A. 内联函数在调用时发生控制转移
B. 内联函数必须通过关键字inline来定义
C. 内联函数是通过编译器来实现的
D. 内联函数函数体的最后一条语句必须是return语句
解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。
2.下列叙述中正确的是( )。(D)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以B与C错误。
3.设程序如下:
#include<iostrearn>
using narnespace std;
int main()
{
int**p,*q,r=10;
q=&r;
p=&q;
cout<<**p+1<<endl;
return 0;
}
以上程序的输出结果是( )。(C)
A. p的地址
B. r的地址
C. 11
D. 运行错误
解析:p为一个二级指针,其存放的是指针变量q的地址,而q存放的又是r的地址。故式子**p相当于对r的引用。所以最后输出的结果为11。
4.有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C){cout<<c;}
~MyClass(){cout<<’B’;}
};
int main(){
MyClass p1,*p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
执行这个程序的输出结果是( )。(D)
A. ABX
B. ABXB
C. AXB
D. AXBB
解析:构造函数和析构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为D。
5.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:从E—R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
6.以下程序运行后的输出结果是( )。
#include
void main()
{char a[]=\\(D)
A. 2,6
B. 3,5
C. 4,7
D. 3,6
解析:程序中首先定义字符数组a,然后在while循环中统计字符a和b的个数。其中j记录a的个数,k记录b的个数。,第一个if语句是当第i个字符为a时,i加1;第二个if语句是当第i个字符为b时,k加1。
7.对数组名作函数的参数,下面描述正确的是 ( )。(B)
A. 数组名作函数的参数,调用时将实参数组复制给形参数组
B. 数组名作函数的参数,主调函数和被调函数共用一段存储单元
C. 数组名作参数时,形参定义的数组长度不能省略
D. 数组名作参数,不能改变主调函数中的数据
解析:数组作为参数实参传递的赴数组的首地址。所以主调函数和被调函数共用一段存储单元。
8.有如下程序:
#include
using namespace std;
class A{
public:
static int a;
void init(){a=1;}
A(int a=2){init();a++;}
};
int A::a=0;
A obj;
int main()
{
cout<<obj.a:
return 0;
}
运行时输出的结果是( )。(B)
A. 0
B. 1
C. 2
D. 3
解析:本题考查构造函数,本题中对类中的a数据成员先是赋值为0,当定义了对象obj时,执行构造函数,将a的值变为了1,所以输出1。
9.运算符重载时不需要保持的性质是( )。(B)
A. 操作数个数
B. 操作数类型
C. 优先级
D. 结合性
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以笞案为B。
10.下列关于C++预定义流对象的叙述中,正确的是( )。(A)
A. cin是C++预定义的标准输入流对象
B. cin是C++预定义的标准输入流类
C. cout是C++预定义的标准输入流对象
D. cout是C++预定义的标准输入流类
解析:cin是C++预定义的标准输入流对象,cout是C++预定义的标准输出流对象。
11.有如下函数模板定义:
template
T1 sum(T1 a1)
{
retum(al+a2+a3);
}
则以下调用中正确的是( )。(A )
A. sum(5);
B. sum(5);
C. sum(5);
D. sum(5);
解析:本题考查的函数模板的使用,有时不能根据用户传进来的参数决定所有模板函数的值类型,如函数的返回值,还有用户希望自己指定参数类型,这时就
本文档预览:3600字符,共16586字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载