国家二级C++机试(选择题)模拟试卷381
选择题
1.下列程序输出的结果是( )。
#include<stdio_h>
fun1(char a,char b){char c;c=a;a=b;b=c;}
fun2(char*a,char b){char c;c=*a;*a=b;b=c;}
fun3(char*a,char*b){char c;c=*a;*a=*b;*b=c;}
void main()
{
char a,b;
a=’A’;b=’B’;fun1(a,b);putchar(a);putchar(b);
a=’A’;b=’B’;fun2(&a,b);putchar(a);putchar(b);
a=’A’;b=’B’;fun3(&a,&b);putchar(a);putchar(b);
putchar(’\n’);
}(B)
A. BABBAB
B. ABBBBA
C. ABBABA
D. ABABBA
解析:由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得到输出结果。其中,三个函数都是实现两个形参的交换功能,只是参数传递的方式不同,有的是地址,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以调用fun1后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。
2.下列程序将x、y和z按从小到大的顺序排列,横线处应添加语句( )。
template<class T>
void fun()
{
T a:
if(x>y)
{
a=x;x=y;y=a;
}
if(y>z)
{
a=y;y=z;z=a;
}
if(x>y)
{
a=x;x=y;y=a;
}
}(C)
A. T x,T y,T z
B. T x;y;z
C. T&x,T&y,T&z
D. T&x,&y,&z
解析:函数。fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T&x,T&v,T&z”。
3.下列叙述中正确的是( )。(C)
A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D. 上述三种说法都不对
解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则。
4.下列叙述中正确的是( )。(B)
A. 有一个以上根结点的数据结构不一定是非线性结构
B. 只有一个根结点的数据结构不一定是线性结构
C. 循环链表是非线性结构
D. 双向链表是非线性结构
解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。
5.下列关于函数的描述中,错误的是( )。(D)
A. 函数可以没有返回值
B. 函数可以没有参数
C. 函数可以是一个类的成员
D. 函数不能被定义为模板
解析:c++是一种强类型语言,它要求对于每一个实现都要有一个实例,这给程序员带来很多不便性。函数模板提供一种用来自动生成各种类型函数实例的算法,程序员只需要初始化其中部分参数和返同值,或者都不初始化,只需要申明通用的类型,而函数体则不需要改变。
6.若有以下程序:
#include<iostream>
using namespace std;
class TestClass
{
public:
void who(){cout<<’’TestClass’’<<end1;}
};
class TestClass1:public TestClass
{
public:
void who(){cout<<’’TestClass1’’<<end1;}
};
int main()
{
TestClass *p;
TestClass1 obj1;
p=&obj1;
p->who();
return 0;
}
则该程序运行后的输出结果是( )。(B)
A. TeatClassl
B. TestClass
C. 0
D. 无输出
解析:程序中的TestClas1为TestClass的派生类,主函数main中定义TestClass对象*p,TestClass1对象obj1,然后p引用obj1,执行p->who()则是调用基类中的who函数,输出TestClass。
7.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用柜形表示加工步骤,用菱形表示逻辑条件。
8.下列对于软件测试的描述中正确的是( )。(C)
A. 软件测试的目的是证明程序是否正确
B. 软件测试的目的是使程序运行结果正确
C. 软件测试的目的是尽可能多地发现程序中的错误
D. 软件测试的目的是使程序符合结构化原则
解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。
9.对C++编译器区分重载函数无任何意义的信息是( )。(C)
A. 参数类型
B. 参数个数
C. 返回值类型
D. 常成员函数关键字const
解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为c。
10.下列给字符数组进行初始化中,正确的是( )。
C
解析:在C++中定义二维数组时并赋值,则数组的行数可以省略不写。选项A)、B)、D)均是字符字符串初始化。。
11.某类中有一个无参且无返回值的常成员函数Show,则正确的Sho
本文档预览:3600字符,共13347字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载