国家二级(C++)机试模拟试卷268
选择题
1.下列方法中,不属于软件调试方法的是( )。(C )
A. 回溯法
B. 强行排错法
C. 集成测试法
D. 原因排除法
解析:软件调试主要采用以下三种方法:
强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。
一 回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状\\
2.C++语言程序是从( )函数开始执行的。(B)
A. ios
B. main
C. list
D. temp
解析:所有的C++语言程序都是从main函数开始执行,而普通函数的存在是为了简化main函数的复杂程度。
3.有如下程序:
#include
using namespace std;
class AA{
int n:
public:
AA(int k):n(k){}
int get(){retum n;}
int getOconst{retum n+1;}
};
int main()
{
AA a(5);
const AA b(6);
cout<<a.get0<<b.get();
retum 0:
}
执行后的输出结果是( )。(B )
A. 55
B. 57
C. 75
D. 77
解析:语句AAa(5)调用的是AA(/ntk):n(k){},a.get()调用int get(){return n;},结果会输出5:而常对象const AA b(6),b.get()调用的是intget()const{return+1;},会输出结果7。
4.有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<\\(B)
A. BAA~A~B~A
B. ABA~B~A~A
C. BAA~B~A~A
D. ABA~A~B~A
解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时,先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。
5.有如下程序:
#include
using namespaee std;
class Basel
{
public:
Basel(int d){eout<<d;}
-Basel(){}
};
class Base2
{
public:
Base2(int d){eout<<d;}
-Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int d):Basel(b),Base2(a),bl(d),b2(c){}
private:
int b1;
int b2;
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
执行这个程序的输出结果是( )。(D)
A. 1234
B. 2134
C. 12
D. 21
解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。
6.要使程序执行后的输出结果为ABCD,应在横线处添
加语句( )。
#include
using namespace std;
class A
{
public:A0{cout<<‘A’;)
};
class B=——
{
public:B0{cout<<’B’;)
};
class C:virtual public A
{
public:C0{cout<<一C;}
(D )
A. public A
B. private A
C. protected A
D. virtual public A
解析:由主函数main入手,定义了类D对象0bi。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。
7.下面的描述中,正确的是( )。(A)
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
解析:在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。
8.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(C)
A. 编译程序
B. 操作系统
C. 教务管理系统
D. 汇编程序
解析:编译软件、操作系统、汇编程序都属于系统软件,只有c教务管理系统才是应用软件。
9.执行下列语句段后,输出字符“*”的个数是( )。
for(int i=50;i>1;–i)
cout<<’*’;(B)
A. 48
B. 49
C. 50
D. 51
解析:本题考查for循环语句,–i表示用之前先减1,邯么这个fnr循环语句只有50到2时才会输出“*”,
本文档预览:3600字符,共15788字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载