點擊查看: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類的參數。因此是錯誤的。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: