- 相關(guān)推薦
3月計算機等級考試二級C++筆試真題及答案
2016年計算機C語(yǔ)言考試已經(jīng)結束了,下面yjbys小編特為大家分享最新的計算機二級C++筆試題及答案,希望對大家有所幫助!
一、選擇題
(1)下列關(guān)于棧敘述正確的是
A)棧頂元素最先能被刪除
B)棧頂元素最后才能被刪除
C)棧底元素永遠不能被刪除
D)以上三種說(shuō)法都不對
(2)下列敘述中正確的是
A)有一個(gè)以上根結點(diǎn)的數據結構不一定是非線(xiàn)性結構
B)只有一個(gè)根結點(diǎn)的數據結構不一定是線(xiàn)性結構
C)循環(huán)鏈表是非線(xiàn)性結構
D)雙向鏈表是非線(xiàn)性結構
(3)某二叉樹(shù)共有7個(gè)結點(diǎn),其中葉子結點(diǎn)只有1個(gè),則該二叉樹(shù)的深度為
(假設根結點(diǎn)在第1層)
A)3
B)4
C)6
D)7
(4)在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是
A)軟件集成測試計劃
B)軟件詳細設計說(shuō)明書(shū)
C)用戶(hù)手冊
D)軟件需求規格說(shuō)明書(shū)
(5)結構化程序所要求的基本結構不包括
A)順序結構
B)GOTO跳轉
C)選擇(分支)結構
D)重復(循環(huán))結構
(6)下面描述中錯誤的是
A)系統總體結構圖支持軟件系統的詳細設計
B)軟件設計是將軟件需求轉換為軟件表示的過(guò)程
C)數據結構與數據庫設計是軟件設計的任務(wù)之一
D)PAD圖是軟件詳細設計的表示工具
(7)負責數據庫中查詢(xún)操作的數據庫語(yǔ)言是
A)數據定義語(yǔ)言
B)數據管理語(yǔ)言
C)數據操縱語(yǔ)言
D)數據控制語(yǔ)言
(8)一個(gè)教師可講授多門(mén)課程,一門(mén)課程可由多個(gè)教師講授。則實(shí)體教師
和課程間的聯(lián)系是
A)1:1聯(lián)系
B)1:m聯(lián)系
C)m:1聯(lián)系
D)m:n聯(lián)系
(9)有三個(gè)關(guān)系R、S和T如下:
則由關(guān)系R和S得到關(guān)系T的操作是
A)自然連接
B)交
C)除
D)并
(10)定義無(wú)符號整數類(lèi)為UInt,下面可以作為類(lèi)UInt實(shí)例化值的是
A)-369
B)369
C)0.369
D)整數集合{1,2,3,4,5}
(11)為了提高函數調用的實(shí)際運行速度,可以將較簡(jiǎn)單的函數定義為
A)內聯(lián)函數
B)重載函數
C)遞歸函數
D)函數模板
(12)若AA為一個(gè)類(lèi),a為該類(lèi)的非靜態(tài)數據成員,在該類(lèi)的一個(gè)成員函數定義
中訪(fǎng)問(wèn)a時(shí),其書(shū)寫(xiě)格式為
A)a
B)AA.a
C)a()
D)AA::a()
(13)當派生類(lèi)從一個(gè)基類(lèi)保護繼承時(shí),基類(lèi)中的一些成員在派生類(lèi)中成為
保護成員,這些成員在基類(lèi)中原有的訪(fǎng)問(wèn)屬性是
A)任何
B)公有或保護
C)保護或私有
D)私有
(14)若要對Data類(lèi)中重載的加法運算符成員函數進(jìn)行聲明,下列選項中正
確的是
A)Data+(Data);
B)Data operator+(Data);
C)Data+operator(Data);
D)operator+(Data,Data);
(15)下列關(guān)于函數模板的描述中,正確的是
A)函數模板是一個(gè)實(shí)例函數
B)使用函數模板定義的函數沒(méi)有返回類(lèi)型
C)函數模板的類(lèi)型參數與函數的參數相同
D)通過(guò)使用不同的類(lèi)型參數,可以從函數模板得到不同的實(shí)例函數
(16) C++系統預定義了4個(gè)用于標準數據流的對象,下列選項中不屬于此
類(lèi)對象的是
A)cout
B)cin
C)cerr
D)cset
(17)Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是
A)cpp
B)exe
C)obj
D)lik
(18)字符串“a+b=12\n\t”的長(cháng)度為
A)12
B)10
C)8
D)6
(19)有如下程序:
#include
using namespace std;
int main(){
int f,f1=0,f2=1;
for(int i=3;i<=6;i++){
f=f1+f2;
f1=f2;f2=f;
}
cout< return 0;
}
運行時(shí)的輸出結果是
A)2
B)3
C)5
D)8
(20)有如下程序:
#include
using namespace std;
int main(){
int a[6]={23,15,64,33,40,58};
int s1,s2;
s1=s2=a[0];
for(int* p=a+1;p if(s1>*p) s1=*p;
if(s2<*p) s2=*p;
}
cout< return 0;
}
運行時(shí)的輸出結果是
A)23
B)58
C)64
D)79
(21)有如下程序:
#include
using namespace std;
void f1(int& x,int& y) {int z=x; x=y; y=z;}
void f2(int x;int y) {int z=x; x=y; y=z;}
int main(){
int x=10,y=26;
f1(x,y);
f2(x,y);
cout< return 0;
}
運行時(shí)的輸出結果是
A)10
B)16
C)26
D)36
(22)有如下程序:
#include
using namespace std;
class XA{
int a;
public:
static int b;
XA(int aa):a(aa) {b++;}
~XA(){}
int get(){return a;}
};
int XA::b=0;
int main(){
XA d1(2),d2(3);
cout< return 0;
}
運行時(shí)的輸出結果是
A)5
B)6
C)7
D)8
(23)有如下程序:
#include
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout< return 0;
}
運行時(shí)的輸出結果是
A)5
B)7
C)9
D)12
(24)若要對類(lèi)BigNumber中重載的類(lèi)型轉換運算符long進(jìn)行聲明,下列選
項中正確的是
A)operator long() const;
B)operator long(BigNumber);
C)long operator long() const;
D)long operator long(BigNumber);
(25)有如下函數模板定義:
template
T1 FUN(T2 n){return n*5.0;}
若要求以int型數據9作為函數實(shí)參調用該模板,并返回一個(gè)double型數據,
則該調用應表示為
A)FUN(9)
B)FUN<9>
C)FUN(9)
D)FUN<9>(double)
(26)下列語(yǔ)句都是程序運行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效
果與其他三條語(yǔ)句不同,該語(yǔ)句是
A)cout< B)cout< C)cout< D)cout< (27)下列關(guān)于析構
函數的描述中,錯誤的是
A)析構函數可以重載
B)析構函數由系統自動(dòng)調用
C)每個(gè)對象的析構函數只被調用一次
D)每個(gè)類(lèi)都有析構函數
(28)下列關(guān)于構造函數的描述中,錯誤的是
A)構造函數名與類(lèi)名相同
B)構造函數可以有返回值
C)構造函數可以重載
D)每個(gè)類(lèi)都有構造函數
(29)若PAT是一個(gè)類(lèi),則程序運行時(shí),語(yǔ)句“PAT(*ad)[3];”調用PAT的構
造函數的次數是
A)0
B)1
C)2
D)3
(30)下列描述中,錯誤的是
A)公有繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
B)公有繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
C)保護繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
D)保護繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
(31)生成派生類(lèi)對象時(shí),派生類(lèi)構造函數調用基類(lèi)構造函數的條件是
A)無(wú)需任何條件
B)基類(lèi)中顯式定義了構造函數
C)派生類(lèi)中顯式定義了構造函數
D)派生類(lèi)構造函數明確調用了基類(lèi)構造函數
(32)下列關(guān)于派生類(lèi)和基類(lèi)的描述中,正確的是
A)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有成員
B)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有和保護成員
C)派生類(lèi)成員函數可以訪(fǎng)問(wèn)基類(lèi)的所有成員
D)派生類(lèi)對基類(lèi)的默認繼承方式是公有繼承
(33)有如下類(lèi)模板定義:
template
class BigNumber{
long n;
public:
BigNumber(T i):n(i){}
BigNumber operator+(BigNumber b){
return BigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的兩個(gè)對象,則下列表達式中錯誤的是
A)bl+b2
B)b1+3
C)3+b1
D)3+3
(34)下列關(guān)于文件流的描述中,正確的是
A)文件流只能完成針對磁盤(pán)文件的輸入輸出
B)建立一個(gè)文件流對象時(shí),必須同時(shí)打開(kāi)一個(gè)文件
C)若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件
D)若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件
(35)有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get() {return m;}
int get() const {return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
cout+a.get()< return 0;
}
運行時(shí)的輸出結果是
A)33
B)38
C)83
D)88
(23)有如下程序:
#include
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout< return 0;
}
運行時(shí)的輸出結果是
A)5
B)7
C)9
D)12
(24)若要對類(lèi)BigNumber中重載的類(lèi)型轉換運算符long進(jìn)行聲明,下列選
項中正確的是
A)operator long() const;
B)operator long(BigNumber);
C)long operator long() const;
D)long operator long(BigNumber);
(25)有如下函數模板定義:
template
T1 FUN(T2 n){return n*5.0;}
若要求以int型數據9作為函數實(shí)參調用該模板,并返回一個(gè)double型數據,
則該調用應表示為
A)FUN(9)
B)FUN<9>
C)FUN(9)
D)FUN<9>(double)
(26)下列語(yǔ)句都是程序運行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效
果與其他三條語(yǔ)句不同,該語(yǔ)句是
A)cout< B)cout< C)cout< D)cout< (27)下列關(guān)于析構
函數的描述中,錯誤的是
A)析構函數可以重載
B)析構函數由系統自動(dòng)調用
C)每個(gè)對象的析構函數只被調用一次
D)每個(gè)類(lèi)都有析構函數
(28)下列關(guān)于構造函數的描述中,錯誤的是
A)構造函數名與類(lèi)名相同
B)構造函數可以有返回值
C)構造函數可以重載
D)每個(gè)類(lèi)都有構造函數
(29)若PAT是一個(gè)類(lèi),則程序運行時(shí),語(yǔ)句“PAT(*ad)[3];”調用PAT的構
造函數的次數是
A)0
B)1
C)2
D)3
(30)下列描述中,錯誤的是
A)公有繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
B)公有繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
C)保護繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
D)保護繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
(31)生成派生類(lèi)對象時(shí),派生類(lèi)構造函數調用基類(lèi)構造函數的條件是
A)無(wú)需任何條件
B)基類(lèi)中顯式定義了構造函數
C)派生類(lèi)中顯式定義了構造函數
D)派生類(lèi)構造函數明確調用了基類(lèi)構造函數
(32)下列關(guān)于派生類(lèi)和基類(lèi)的描述中,正確的是
A)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有成員
B)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有和保護成員
C)派生類(lèi)成員函數可以訪(fǎng)問(wèn)基類(lèi)的所有成員
D)派生類(lèi)對基類(lèi)的默認繼承方式是公有繼承
(33)有如下類(lèi)模板定義:
template
class BigNumber{
long n;
public:
BigNumber(T i):n(i){}
BigNumber operator+(BigNumber b){
return BigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的兩個(gè)對象,則下列表達式中錯誤的是
A)bl+b2
B)b1+3
C)3+b1
D)3+3
(34)下列關(guān)于文件流的描述中,正確的是
A)文件流只能完成針對磁盤(pán)文件的輸入輸出
B)建立一個(gè)文件流對象時(shí),必須同時(shí)打開(kāi)一個(gè)文件
C)若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件
D)若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件
(35)有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get() {return m;}
int get() const {return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
cout+a.get()< return 0;
}
運行時(shí)的輸出結果是
A)33
B)38
C)83
D)88
(23)有如下程序:
#include
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout< return 0;
}
運行時(shí)的輸出結果是
A)5
B)7
C)9
D)12
(24)若要對類(lèi)BigNumber中重載的類(lèi)型轉換運算符long進(jìn)行聲明,下列選
項中正確的是
A)operator long() const;
B)operator long(BigNumber);
C)long operator long() const;
D)long operator long(BigNumber);
(25)有如下函數模板定義:
template
T1 FUN(T2 n){return n*5.0;}
若要求以int型數據9作為函數實(shí)參調用該模板,并返回一個(gè)double型數據,
則該調用應表示為
A)FUN(9)
B)FUN<9>
C)FUN(9)
D)FUN<9>(double)
(26)下列語(yǔ)句都是程序運行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效
果與其他三條語(yǔ)句不同,該語(yǔ)句是
A)cout< B)cout< C)cout< D)cout< (27)下列關(guān)于析構
函數的描述中,錯誤的是
A)析構函數可以重載
B)析構函數由系統自動(dòng)調用
C)每個(gè)對象的析構函數只被調用一次
D)每個(gè)類(lèi)都有析構函數
(28)下列關(guān)于構造函數的描述中,錯誤的是
A)構造函數名與類(lèi)名相同
B)構造函數可以有返回值
C)構造函數可以重載
D)每個(gè)類(lèi)都有構造函數
(29)若PAT是一個(gè)類(lèi),則程序運行時(shí),語(yǔ)句“PAT(*ad)[3];”調用PAT的構
造函數的次數是
A)0
B)1
C)2
D)3
(30)下列描述中,錯誤的是
A)公有繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
B)公有繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
C)保護繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員
D)保護繼承時(shí)基類(lèi)中的保護成員在派生類(lèi)中仍是保護成員
(31)生成派生類(lèi)對象時(shí),派生類(lèi)構造函數調用基類(lèi)構造函數的條件是
A)無(wú)需任何條件
B)基類(lèi)中顯式定義了構造函數
C)派生類(lèi)中顯式定義了構造函數
D)派生類(lèi)構造函數明確調用了基類(lèi)構造函數
(32)下列關(guān)于派生類(lèi)和基類(lèi)的描述中,正確的是
A)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有成員
B)派生類(lèi)成員函數只能訪(fǎng)問(wèn)基類(lèi)的公有和保護成員
C)派生類(lèi)成員函數可以訪(fǎng)問(wèn)基類(lèi)的所有成員
D)派生類(lèi)對基類(lèi)的默認繼承方式是公有繼承
(33)有如下類(lèi)模板定義:
template
class BigNumber{
long n;
public:
BigNumber(T i):n(i){}
BigNumber operator+(BigNumber b){
return BigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的兩個(gè)對象,則下列表達式中錯誤的是
A)bl+b2
B)b1+3
C)3+b1
D)3+3
(34)下列關(guān)于文件流的描述中,正確的是
A)文件流只能完成針對磁盤(pán)文件的輸入輸出
B)建立一個(gè)文件流對象時(shí),必須同時(shí)打開(kāi)一個(gè)文件
C)若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件
D)若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件
(35)有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get() {return m;}
int get() const {return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
cout+a.get()< return 0;
}
運行時(shí)的輸出結果是
A)33
B)38
C)83
D)88
二、填空題
(1)有序線(xiàn)性表能進(jìn)行二分查找的前提是該線(xiàn)性表必須是 【1】 存儲的。
(2)一棵二叉樹(shù)的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF。則后
序遍歷結果為 【2】 。
(3)對軟件設計的最小單位(模塊或程序單元)進(jìn)行的測試通常稱(chēng)為 【3】
測試。
(4)實(shí)體完整性約束要求關(guān)系數據庫中元組的 【4】 屬性值不能為空。
(5)在關(guān)系A(S,SN,D)和關(guān)系B(D,CN,NM)中,A的主關(guān)鍵字是S,B的主關(guān)鍵
字是D,則稱(chēng) 【5】 是關(guān)系A的外碼。
(6)若有定義語(yǔ)句“int x=10,y=20,z=20;”,則表達式x>z&&y==z的值為
【6】 。
(7)有如下語(yǔ)句序列:
int x=-10;while(++x){ }
運行時(shí)while循環(huán)體的執行次數為 【7】 。
(8)有如下語(yǔ)句序列:
int arr[2][2]={{9,8},{7,6}};
int *p=arr[0]+1; cout<<*p< 運行時(shí)的輸出結果是【8】 。
(9)函數fun的功能是將一個(gè)數字字符串轉換為一個(gè)整數,請將函數補充完
整。
int fun(char *str){
int num=0;
while(*str){
num*=10;
num+= 【9】 ;
str++;
}
return num;
}
(10)若要將函數“void FriFun();”聲明為類(lèi)MyClass的友元函數,則應
在類(lèi)MyClass的定義中加入語(yǔ)句 【10】 。
(11)下列程序的輸出結果為012,請根據注釋將橫線(xiàn)處的缺失部分補充完
整。
#include
using namespace std;
class Test{
public:
Test(int a) {data=a;}
~Test() {}
void print(){cout< private:
int data;
};
int main(){
Test t[3]={ 【11】 };//對有3個(gè)元素的Test類(lèi)對象數組t初始化t
[i].print();
for(int i=0;i<3;i++)
return 0;
}
(12)請在橫線(xiàn)處填寫(xiě)派生類(lèi)Derived的繼承方式,使得程序的輸出結果為
Base。
#include
using namespace std;
class Base{
public:
void print(){cout<<"Base";}
};
class Derived: 【12】 Base{};
int main(){
Derived d;
d.print();
return 0;
}
(13)下列程序的輸出結果為1 2.3 2 4.6,請將橫線(xiàn)處的缺失部分補充完整。
#include
using namespace std;
class Base{
public:
Base(int a):idata(a){}
void print(){cout< private:
int idata;
};
class Derived:public Base{
public:
Derived(int a;double b): 【13】 ,ddata(b){}
void print(){Base::print();cout< private:
double ddata;
};
int main(){
Derived dl(1,2.3),d2(2,4.6);
d1.print();
d2.print();
return 0;
}
(14)下列程序的輸出結果為-5/8 -3/4,請將橫線(xiàn)處的缺失部分補充完整
。
#include
using namespace std;
class Fraction{ //“分數”類(lèi)
public:
Fraction(double a,double b):num(a),den(b){}
~Fraction(){}
//重載取負運算符“-”,返回一個(gè)分數對象,其分子是原來(lái)分子的相反數
。
Fraction operator-(){
【14】
return f;
}
void print(){ cout< private:
double num; //分子
double den; //分母
};
int main(){
Fraction f1(5;8),f2(3,4);
(-f1).print();(-f2).print();
return 0;
}
(15)函數Min的功能是返回具有n個(gè)元素的數組array中的最小值。請將橫
線(xiàn)處的缺失部分補充完整,使得程序的輸出結果為1.24。
#include
using namespace std;
template
T Min(T* array,int n){
T min=array[0];
for(int i=1;i if(array[i] return min;
}
int main(){
double arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};
cout<< 【15】 ;
return 0;
}
【參考答案】
選擇題
ABDDB ACDCB
CDAAA ADCAD
BDBCD CDCCA
BBCDB CDDCB
填空題
順序 DEBFCA 單元 主鍵 D 3 1217 0,9 4 20,0 i-1 double avg (double
a,double b) 13715 emodew 123456
【3月計算機等級考試二級C++筆試真題及答案】相關(guān)文章:
3月計算機等級考試二級c筆試真題10-04
計算機等級考試真題及答案10-04
3月全國計算機等級考試二級考試真題及答案10-11
計算機等級考試二級VB真題附答案10-11
2016年3月計算機二級考試真題及答案05-21
最新計算機等級考試真題及答案10-04
計算機等級考試二級筆試卷(含答案)01-24
計算機等級考試真題10-24