国家二级C++机试(选择题)模拟试卷217
选择题
1.下列关于C++函数的说明中,正确的是( )。(C)
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是在定义在另一个函数体内,所以A选项错误。函数可以没有返回值,所以就不需要return了,如果被调函数在调用函数之前已经定义,那么就不需要声明,所以C选项错误,正确选项为D。
2.要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是( )。(B)
A. int x[3]={0,0,0);
B. int x[]={0};
C. static int x [3]={0);
D. int x[]={0,0,0);
解析:当数组声明时没有给出数组的大小,但是有初始化列表时,数组的大小就由列表中元素的个数来确定。对于选项B定义数组x时,没有给出数组的大小,初始化时只给出了一个元素0。所以数组x只包含一个元素为0的元素。
3.有如下程序
#include
#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 ();
}
执行这个程序屏幕上将显示输出( )。(D)
A. ABX
B. ABXB
C. AXB
D. AXBB
解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建MayClass类的对象p1时,调用MayClass类的默认构造函数,输出字母A:然后在创建*p2对象时,调用带字母参数的构造函数,输出字母x;语句delete p2:调用析构函数,输出字母B;在主函数退出时,调用析构函数清除对象p1,输出字母B。
4.下列描述中,正确的是( )。(A)
A. 线性链表是线性表的链式存储结构
B. 栈与队列是非线性结构
C. 双向链表是非线性结构
D. 只有根结点的二叉树是线性结构
解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足,下列两个条件:
①有且只有一个根结点:
②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
5.下列描述中正确的是(D)
A. 软件测试应该由程序开发者来完成
B. 程序经调试后一般不需要再测试
C. 软件维护只包括对程序代码的维护
D. 以上三种说法都不对
解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不同程度地存在障碍的,所以选项A)错误。在程序调试时,修改了一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B)错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C)错误。
6.下列程序的输出结果是( )。
#include<iostream>
using namespace std;
template<typename T>
T fun(T a,T b){return(a>=b)?a:b;}
void main()
{
cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;
}(D)
A. 6,3.14
B. 3,6.28
C. 3,3.14.
D. 6,6.28
解析:“?:”为条件运算符,(a>=b)?a:b是当a大于b时取a,否则取b。所以第一个fun(3,6)调用中,6大于3,所以输出6,同理第二个fun(3.14F,6.28F)调用中输出6.28。
7.字符串“a+b=12\\
\\\\t”的长度为( )。(C)
A. 12
B. 10
C. 8
D. 6
解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。
8.有如下定义:
int a[5]={1,3,5,7,9},*p=a;
下列表达式中不能得到数值5的是( )。(B)
A. a[2]
B. a[3]
C. *(p+2)
D. *p+4
解析:此题考查的是指针引用数组元素。B选项中,a[3]是数组的第四个元素,即7;其它选项的引用均可得到5。
9.下列有关内联函数的叙述中,正确的是( )。(C)
A. 内联函数在调用时发生控制转移
B. 内联函数必须通过关键字inline来定义
C. 内联函数是通过编译器来实现的
D. 内联函数函数体的最后一条语句必须是return语句
解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换所以它没有一般函数的参数压栈和和退栈操作,所以选项A错误;即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更高的执行效率,所以选项D错误。
10.有如下程序:
#include<iostream>
#include<cstring>
using namespace std;
class XCD {
char*a;
int b;
public:
XCD(char*aa,int bb){
a=new char[strlen(aa)+1];
strcpy(a,aa);
b=bb;
}
char*Geta(){return a;}
int Getb0{ return b;}
};
<本文档预览:3600字符,共9302字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载