2013年计算机二级考试C++模拟试题十九及答案
一、选择题
1.在深度为5的满二叉树中,叶子结点的个数为
A)32
B)31
C)16
D)15
【参考答案】B
2.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是
A)bdgcefha
B)gdbecfha
C)bdgaechf
D)gdbehfca
【参考答案】D
3.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用
A)栈
B)堆
C)数组
D)链表
【参考答案】A
4.软件工程的理论和技术性研究的内容主要包括软件开发技术和
A)消除软件危机
B)软件工程管理
C)程序设计自动化
D)实现软件可重用
【参考答案】B
5.开发软件时对提高开发人员工作效率至关重要的是
A)操作系统的资源管理功能
B)先进的软件开发工具和环境
C)程序人员的数量
D)计算机的并行处理能力
【参考答案】B
6.在软件测试设计中,软件测试的主要目的是
A)实验性运行软件
B)证明软件正确
C)找出软件中全部错误
D)发现软件错误而执行程序
【参考答案】D
7.数据处理的最小单位是
A)数据
B)数据元素
C)数据项
D)数据结构
【参考答案】C
8.索引属于
A)模式
B)内模式
C)外模式
D)概念模式
【参考答案】B
9.下述关于数据库系统的叙述中正确的是
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型一致
D)数据库系统比文件系统能管理更多的数据
【参考答案】B
10.数据库系统的核心是
A)数据库
B)数据库管理系统
C)模拟模型
D)软件工程
【参考答案】B
11.下列关于C++语言类的描述中错误的是
A)类用于描述事物的属性和对事物的操作
B)类与类之间通过封装而具有明确的独立性
C)类与类之间必须是平等的关系,而不能组成层次结构
D)类与类之间可以通过一些方法进行通信和联络
【参考答案】C
12.C++语言中,表示一条语句结束的标号是
A)#
B); 来源:www.examda.com
C)//
D)}
【参考答案】B
13.以下叙述中正确的是
A)构成C++语言程序的基本单位是类
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
【参考答案】A
14.已知有定义
const int D=5;
int i=1;
double f=0.32;
char c=15;
则下列选项错误的是
A)++i;
B)D--;
C)c++;
D)--f;
【参考答案】B
15.以下程序的输出结果是
#include
void reverse(int a[],int n)
{ int i,t;
for(i=0;i
{ t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} }
void main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
cout << s; }
A)22
B)10
C)34
D)30
【参考答案】A
16.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是
#include
void main()
{ int i=0,j,k;
do{ i++;k=316-13*i;} while( );
j=k/11;
cout << "316=13*"<
A)k/11
B)k%11
C)k/11==0
D)k%11==0
【参考答案】B
17.设有数组定义: char array[]="China";,则数组 array所占的空间为
A)4个字节
B)5个字节
C)6个字节
D)7个字节
【参考答案】C
18.若已定义:
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 0≤i≤9, 则对a数组元素不正确的引用是
A)a[p-a]
B)*(&a[i])
C)p[i]
D)a[10]
【参考答案】D
19.以下程序的输出结果是
#include
void main()
{ int x=1,y=3;
cout << x++ << ",";
{ int x=0;x+=y*2;
cout << x <<"," << y << ","; }
cout << x <<"," << y; }
A)1,6,3,1,3
B)1,6,3,6,3 来源:考试大
C)1,6,3,2,3
D)1,7,3,2,3
【参考答案】C
20.函数fun的返回值是
fun(char *a,char *B)
{ int num=0,n=0;
while(*(a+num)!=′\0′)num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
return num; }
A)字符串a的长度
B)字符串b的长度
C)字符串a和b的长度之差
D)字符串a 和b的长度之和
【参考答案】D
21.下面程序输出的结果是
#include
void main()
{ int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
cout << a[2-i][i]<<""; }
A)1 5 9
B)7 5 3
C)3 5 7
D)5 9 1
【参考答案】B
22.下面程序的结果为
#include
int c;
class A
{ private:
int a;
static int b;
public:
A(){a=0; c=0;}
void seta(){a++;}
void setb(){b++;}
void setc(){c++;}
void display(){cout << a << " " << b << " " << c;} };
int A::b = 0;
void main()
{
A a1,a2;
a1.seta();
a1.setb();
a1.setc();
a2.seta();
a2.setb();
a2.setc();
a2.display();
}
A)1 2 1
B)1 2 2
C)1 1 2
D)2 2 2
【参考答案】B
23.下列描述中哪个是正确的?
A)私有派生的子类无法访问父类的成员
B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C)私有派生类不能作为基类派生子类
D)私有派生类的所有子孙类将无法继续继承该类的成员
【参考答案】B
24.下列关于构造函数说法不正确的是
A)构造函数必须与类同名
B)构造函数可以省略不写
C)构造函数必须有返回值
D)在构造函数中可以对类中的成员进行初始化
【参考答案】C
25.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是
A)一元运算符
B)二元运算符
C)选项A)和选项
B)都有可能
D)重载错误
【参考答案】D
26.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是
A)一元成员运算符
B)二元成员运算符
C)一元友元运算符
D)选项
B)和选项
C)都可能
【参考答案】D
27.下列关于模板的说法正确的是
A)模板的实参在任何时候都可以省略
B)类模板与模板类所指的是同一概念
C)类模板的参数必须是虚拟类型的
D)类模板中的成员函数全部都是模板函数
【参考答案】D
28.表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是
A)showbase()和eof()
B)showpoint()和eof()
C)showpoint()和bad()
D)showpoint()和good()
【参考答案】B
29.下面程序段的运行结果是
void main()
{ int t, a, b, c;
a=1;b=2;c=2;
while(a
{ t=a;a=b;b=t;c--;}
cout << a << "," << b << "," << c; }
A)1,2,0
B)2,1,0
C)1,2,1
D)2,1,1
【参考答案】A
30.下列程序中画线处应填入的语句是
class Base
{ public:
void fun(){cout<<"Base of fun"<
class Derived:public Base
{ void fun()
{ //显示基类的成员函数fun
cout<<"Derived of fun"<
A)fun();
B)Base.fun();
C)Base::fun();
D)Base->fun();
【参考答案】C
31.若定义int k=7,x=12;,则能使值为3的表达式是
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
【参考答案】D
32.在位运算中,操作数每右移一位,其结果相当于
A)操作数乘以2
B)操作数除以2
C)操作数乘以4
D)操作数除以4
【参考答案】B
33.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A)a.next=q;
B)p.next=&b;
C)p->next=&b;
D)(*p).next=q;
【参考答案】B
34.一个类的友元函数能够访问该类的
A)私有成员
B)保护成员
C)公有成员
D)所有成员
【参考答案】D
35.下面程序的输出结果是
#include
#include
void main()
{ char p1[10],p2[10];
strcpy(p1,"abc");
strcpy(p2,"ABC");
char str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
cout << str; }
A)xyzabcABC
B)zabcABC
C)xyabcABC
D)yzabcABC
【参考答案】C
二、填空题
(1)在树形结构中,树根结点没有【1】。
【参考答案】
【1】前件
(2)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【2】的设计方法。
【参考答案】
【2】数据结构
(3)面向对象的模型中,最基本的概念是对象和【3】。
【参考答案】
【3】类
(4)软件设计模块化的目的是【4】。
【参考答案】
【4】降低复杂性
(5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、【5】和物理数据模型。
【参考答案】
【5】逻辑数据模型
(6)派生类的成员一般分为两部分,一部分是【6】,另一部分是自己定义的新成员。
【参考答案】
【6】从基类继承的成员
(7)以下程序输出的结果是【7】。
#include
void main()
{ int a=5,b=4,c=3,d;
d=(a>b>C);
cout << d; }
【参考答案】
【7】0
(8)设i,j,k均为int型变量,则执行完for(i=0, j=10; i<=j; i++, j--)k=i+j;语句后,k的值为【8】。
【参考答案】
【8】10
(9)如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是【9】。
【参考答案】
【9】friend void A( );
(10)如果类B继承了类A,则称类A为类B的基类,类B称为类A的【10】。
【参考答案】
【10】派生类
(11)将x+y中的+运算符用友元函数重载应写为【11】。
【参考答案】
【11】operator+(x,y)
(12)已知程序的结果为1 2 3,请填空。
#include
template
class A
{ public:
T x,y,z;
void display(){cout << x << " " << y << " " << z;} };
void main()
{ Aa1;
【12】
【13】
【14】
a1.display(); }
【参考答案】
【12】a1.x=1【13】a1.y=2【14】a1.z=3
(13)下列程序段的输出结果是【15】。
cout << fixed << 509.123456789 << endl;
【参考答案】
【15】509.123457