点击查看:2018年3月计算机二级C++过关练习题及答案汇总
1[单选题]算法的空间复杂度是指
A.算法程序的长度
B.算法程序中的指令条数
C.算法程序所占的存储空间
D.执行过程中所需要的存储空间
参考答案:D
2[单选题]下面程序的结果为
#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 <<<<
int A::b=0;
void main()
{
A al,a2;
al.seta();
al.setb();
al.setc();
a2.seta();
a2.setb();
a3.setc();
a2.display();
A.121 B.122 C.112 D.222
参考答案:B
3[单选题]下列关于线性链表的描述中,正确的是( )。
Ⅰ、只含有一个指针域来存放下一个元素地址
Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件l
Ⅲ、结点由两部分组成:数据域和指针域。
A.仅Ⅰ、ⅡB.仅Ⅰ、ⅢC.仅Ⅱ、ⅢD.全部
参考答案:D
参考解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
4[单选题]在下列关于二叉树的叙述中,正确的一项是( )。
A.在二叉树中,任何一个结点的度都是2
B.二叉树的度为2
C.在二叉树中至少有一个结点的度为2
D.一棵二叉树的度可以小于2
参考答案:B
参考解析:特别要注意“结点的度”和“树的度”是两个不同的概念。“结点的度”指的是此结点拥有的后件个数。“树的度”指的是所有结点中的最大的度。在二叉树中,结点中最大的变为2,所以二叉树的度为2。但并不是每一个结点的度都是2,可以为0或1,当二叉树为空时没有结点,所以也不会有度为2的结点,所以C)也是错误的。
5[单选题]有如下程序:
A.
B.
C.
D.程序编译时出错
参考答案:B
参考解析:
6[单选题] 静态成员函数没有( )。
A.返回值B.this指针C.指针参数D.返回类型
参考答案:B
参考解析:this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所有对象都共享的函数,在内存中只存在一份,不属于某个对象所有,所以静态函数没有this指针。
7[单选题] 有如下程序:
﹟nclude
using namespace std;
int main()
{
int*P;
*P=9:
cout<<”The value at p:”<< *p;
return 0;
}
编译运行程序将出现的情况是( )。
A.编译时出现语法错误,不能生成可执行文件
B.运行时一定输出:l'lle value at P:9
C.运行时一定输出:llle value at P:*9
D.运行时有可能出错
参考答案:D
参考解析:先定义指针变量,然后给指针变量赋初值有三种情况:①用取地址运算符“&”将变量地址赋给指针变量,如P=&a;②将一个指针变量中的地址赋给另一个指针变量,如P=p1;③给指针变量赋空值0,如q=0,表示该指针变量不指向任何变量。而不能用一个常量给指针变量赋初值,所以本题选D。
8[单选题] 算法的时间复杂度是指( )。
A.算法的执行时间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的基本运算次数
参考答案:D
参考解析:算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n)),因此,问题的规模n越大,算法执行的时间增长率与f(n)的增长率正相关,称做渐进时间复杂度(AsymptoticTimeCom-plexity)。简单来说就是算法在执行过程中所需要的基本运算次数。
9[简答题]请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//t+++found母***”。
#nClude using namespaCe std; //矩阵基础类,一个抽象类
Class MatrixBase{ int rows,Cols; publiC:
MatrixBase(int rows,int Cols):roWS(rows),Cow(Cols){} int getRows()Const{retum rows;}//矩阵行数
int getCols()Const{return Cols;}//矩阵列数
virtual double getElement(int r,int C)Const=0;//取第i个元素的值 void show()Const{//分行显示矩阵中所有元素
for(int i=0;i
for(int j=0;j
} }; //矩阵类
Class Matrix:publiC MatfixBase{ double*val;
publiC: //**********found**********
Matrix(int rows,int Cols,double in[]=NULL):——{ //**********found**********
val=;
for(int i=0:i
val[i]=(m==NULL?0.0:Ill[i]);
}
一Matrix(){delete[]val;} double getElement(int r,int C)Const{retum val[r*getCols()+C];}
};
//单位阵(主对角线元素都是l,其余元素都是0的方阵)类 Class UnitMatrix:publiC MatrixBase{
publiC:
UnitMatrix(int rOWS):MatrixBase(rows,rows){} //单位阵行数列数相同
double getElement(int r,int C)Const{ //**********found**********
if(_____)retum l.0; retum 0.0;
} }; int main(){
MatrixBase*m;
double d[][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}}; ITI=new Matrix(3,5,(double*)d);
m→show(); delete m;
Cout<
m=new UnitMatrix(6); Ill→show();
delete m; retum0; } .
参考解析:
(1)getElemenl(1,i)
f2)MatrixBase(rows,cols)
(3)flew double[rows*cols]
(4)r==C
[填空题]类class one在声明func成员函数时发生错误,出错原因是_______。
参考解析:
【答案】class one前没有声明语句class two;
【解析】当一个类作为另一个类的成员函数、成员函数的 参数或其他情况的时候,要确保编译器能正确解析。由于在class one之前没有关于class two的任 何说明.而在class one的func函数中却用了class two类的参数。因此是错误的。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: