国家二级(C++)机试模拟试卷510
选择题
1.下列有关内联函数的叙述中,正确的是( )。(C)
A. 内联函数在调用时发生控制转移
B. 内联函数必须通过关键字inline来定义
C. 内联函数是通过编译器来实现的
D. 内联函数函数体的最后一条语句必须是return语句
解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。
2.假定MyClass为一个类,那么下列的函数说明中,( )为该类的析构函数。(D)
A. void~MyClass():
B. MyClass(int n);
C. MyClass():
D. ~MyClass0:
解析:CH语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。
3.有如下程序段:
int i=0,j=1;
int &r=i;//①
r=j;//②
int *p=&i://③
*p=&r;//④
其中会产生编译错误的语句是( )。(A)
A. ④
B. ③
C. ②
D. ①
解析:本题考查指针和引用。①为引崩,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。
4.有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i-1;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i:3:
Fun fun1;
const Fun fun2;
——
return 0;
}
若程序的输出结果是:
123
则程序中下画线处遗漏的语句是( )。(A)
A. cout<<funl.value()<<Fun::i<<fun2.value();
B. eout<<Fun::i<<fun1.value()《fun2.value();
C. tout<<funl.value()<<fun2.value()<<Fun::i;
D. eout<<fun2.value()<<Fun::i<<fun1.value();
解析:本题考查构造函数、常成员函数和静态数据成员。外部同名的变量赋值,不能改变类的静态变量值,所以Fun对象里的i值为2,所以本题答案为A。
5.有如下程序:
#include
using namespace std;
class test{
private:
int a;
public:
test(){tout<<\\(D)
A. 3
B. constructor
destructor
C. copy constructor
destructor
D. 3
destructor
解析:本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象A(3),对象带着参数,所以执行带参数的构造函数,输出3,然后执行析构函数,输出destructor。所以本题答案为D。
6.在下列原型所示的C++函数中,按“传值”方式传递参数的是( )。(A)
A. void f1(int x);
B. void f2(int * x);
C. void f3(const int *x);
D. void f4(int &x);
解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。其中B、C选项都是传递变量指针,D选项为引用形参,所以本题答案为A。
7.有如下程序:
#include
using namespace std;
class Point{
public:
static int number;
public:
Point(){number++;}
~Point(){number–;}
};
int Point::number=0:
int main(){
Point*ptr;
Point A,B;
{
Point*ptr_point=new Point [3];
ptr=ptr_point;
}
Point C;
eout<<Point::number<<endl;
delete[]ptr;
return 0;
}
执行这个程序的输出结果是( )。(C)
A. 3
B. 4
C. 6
D. 7
解析:本题考查默认构造函数,题目中定义一个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。
8.下列各选项中,不属于序言性注释的是( )。(D)
A. 程序标题
B. 程序设计者
C. 主要算法
D. 数据状态
解析:注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。
9.软件详细设计产生的图如下:
(C)
A. N-S图
B. PAD图
C. 程序流程图
D. E-R图
解析:N-S图提出了用方框
本文档预览:3600字符,共19643字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载