- 相關推薦
3月計算機二級考試《C++》真題
在社會的各個領域,我們都離不開試題,借助試題可以對一個人進行全方位的考核。什么樣的試題才是科學規(guī)范的試題呢?下面是小編幫大家整理的3月計算機二級考試《C++》真題,僅供參考,歡迎大家閱讀。
3月計算機二級考試《C++》真題 1
一、選擇題
(1)下列關于棧敘述正確的是
A)棧頂元素最先能被刪除
B)棧頂元素最后才能被刪除
C)棧底元素永遠不能被刪除
D)以上三種說法都不對
(2)下列敘述中正確的是
A)有一個以上根結點的數據結構不一定是非線性結構
B)只有一個根結點的數據結構不一定是線性結構
C)循環(huán)鏈表是非線性結構
D)雙向鏈表是非線性結構
(3)某二叉樹共有7個結點,其中葉子結點只有1個,則該二叉樹的深度為(假設根結點在第1層)
A)3
B)4
C)6
D)7
(4)在軟件開發(fā)中,需求分析階段產生的主要文檔是
A)軟件集成測試計劃
B)軟件詳細設計說明書
C)用戶手冊
D)軟件需求規(guī)格說明書
(5)結構化程序所要求的基本結構不包括
A)順序結構
B)GOTO跳轉
C)選擇(分支)結構
D)重復(循環(huán))結構
(6)下面描述中錯誤的是
A)系統(tǒng)總體結構圖支持軟件系統(tǒng)的詳細設計
B)軟件設計是將軟件需求轉換為軟件表示的過程
C)數據結構與數據庫設計是軟件設計的任務之一
D)PAD圖是軟件詳細設計的表示工具
(7)負責數據庫中查詢操作的數據庫語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言
(8)一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯系是
A)1:1聯系
B)1:m聯系
C)m:1聯系
D)m:n聯系
(9)有三個關系R、S和T,則由關系R和S得到關系T的操作是
A)自然連接
B)交
C)除
D)并
(10)定義無符號整數類為UInt,下面可以作為類UInt實例化值的是
A)-369
B)369
C)0.369
D)整數集合{1,2,3,4,5}
(11)為了提高函數調用的實際運行速度,可以將較簡單的函數定義為
A)內聯函數
B)重載函數
C)遞歸函數
D)函數模板
(12)若AA為一個類,a為該類的非靜態(tài)數據成員,在該類的一個成員函數定義中訪問a時,其書寫格式為
A)a
B)AA.a
C)a()
D)AA::a()
(13)當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是
A)任何
B)公有或保護
C)保護或私有
D)私有
(14)若要對Data類中重載的加法運算符成員函數進行聲明,下列選項中正確的是
A)Data+(Data);
B)Data operator+(Data);
C)Data+operator(Data);
D)operator+(Data,Data);
(15)下列關于函數模板的描述中,正確的是
A)函數模板是一個實例函數
B)使用函數模板定義的函數沒有返回類型
C)函數模板的類型參數與函數的參數相同
D)通過使用不同的類型參數,可以從函數模板得到不同的實例函數
(16) C++系統(tǒng)預定義了4個用于標準數據流的對象,下列選項中不屬于此類對象的是
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”的長度為
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;
}
運行時的輸出結果是
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;
}
運行時的輸出結果是
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;
}
運行時的輸出結果是
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;
}
運行時的輸出結果是
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;
}
運行時的輸出結果是
A)5
B)7
C)9
D)12
(24)若要對類BigNumber中重載的類型轉換運算符long進行聲明,下列選項中正確的是
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作為函數實參調用該模板,并返回一個double型數據,則該調用應表示為
A)FUN(9)
B)FUN<9>
(26)下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是
A)cout< B)cout< C)cout< D)cout<
(27)下列關于析構函數的描述中,錯誤的是
A)析構函數可以重載
B)析構函數由系統(tǒng)自動調用
C)每個對象的析構函數只被調用一次
D)每個類都有析構函數
(28)下列關于構造函數的描述中,錯誤的是
A)構造函數名與類名相同
B)構造函數可以有返回值
C)構造函數可以重載
D)每個類都有構造函數
(29)若PAT是一個類,則程序運行時,語句“PAT(*ad)[3];”調用PAT的構造函數的次數是
A)0
B)1
C)2
D)3
(30)下列描述中,錯誤的是
A)公有繼承時基類中的公有成員在派生類中仍是公有成員
B)公有繼承時基類中的保護成員在派生類中仍是保護成員
C)保護繼承時基類中的公有成員在派生類中仍是公有成員
D)保護繼承時基類中的保護成員在派生類中仍是保護成員
(31)生成派生類對象時,派生類構造函數調用基類構造函數的條件是
A)無需任何條件
B)基類中顯式定義了構造函數
C)派生類中顯式定義了構造函數
D)派生類構造函數明確調用了基類構造函數
(32)下列關于派生類和基類的描述中,正確的是
A)派生類成員函數只能訪問基類的公有成員
B)派生類成員函數只能訪問基類的公有和保護成員
C)派生類成員函數可以訪問基類的所有成員
D)派生類對基類的默認繼承方式是公有繼承
(33)有如下類模板定義:
template
class BigNumber{
long n;
public:
BigNumber(T i):n(i){}
BigNumber operator+(BigNumber b){
return BigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的兩個對象,則下列表達式中錯誤的是
A)bl+b2
B)b1+3
C)3+b1
D)3+3
(34)下列關于文件流的描述中,正確的是
A)文件流只能完成針對磁盤文件的輸入輸出
B)建立一個文件流對象時,必須同時打開一個文件
C)若輸入流要打開的文件不存在,將建立一個新文件
D)若輸出流要打開的文件不存在,將建立一個新文件
(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;
}
運行時的輸出結果是
A)33
B)38
C)83
D)88
二、填空題
(1)有序線性表能進行二分查找的前提是該線性表必須是 【1】 存儲的。
(2)一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF。則后序遍歷結果為 【2】 。
(3)對軟件設計的.最小單位(模塊或程序單元)進行的測試通常稱為 【3】 測試。
(4)實體完整性約束要求關系數據庫中元組的 【4】 屬性值不能為空。
(5)在關系A(S,SN,D)和關系B(D,CN,NM)中,A的主關鍵字是S,B的主關鍵字是D,則稱 【5】 是關系A的外碼。
(6)若有定義語句“int x=10,y=20,z=20;”,則表達式x>z&&y==z的值為 【6】 。
(7)有如下語句序列:
int x=-10;while(++x){ }
運行時while循環(huán)體的執(zhí)行次數為 【7】 。
(8)有如下語句序列:
int arr[2][2]={{9,8},{7,6}};
int *p=arr[0]+1; cout<<*p< 運行時的輸出結果是 【8】 。
(9)函數fun的功能是將一個數字字符串轉換為一個整數,請將函數補充完整。
int fun(char *str){
int num=0;
while(*str){
num*=10;
num+= 【9】 ;
str++;
}
return num;
}
(10)若要將函數“void FriFun();”聲明為類MyClass的友元函數,則應在類MyClass的定義中加入語句 【10】 。
(11)下列程序的輸出結果為012,請根據注釋將橫線處的缺失部分補充完整。
#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個元素的Test類對象數組t初始化t[i].print();
for(int i=0;i<3;i++)
return 0;
}
(12)請在橫線處填寫派生類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,請將橫線處的缺失部分補充完整。
#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,請將橫線處的缺失部分補充完整。
#include
using namespace std;
class Fraction{ //“分數”類
public:
Fraction(double a,double b):num(a),den(b){}
~Fraction(){}
//重載取負運算符“-”,返回一個分數對象,其分子是原來分子的相反數。
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個元素的數組array中的最小值。請將橫線處的缺失部分補充完整,使得程序的輸出結果為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;
}
3月計算機二級考試《C++》真題 2
一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)
(1)下列數據結構中,屬于非線性結構的是
A.循環(huán)隊列
B.帶鏈隊列
C.二叉樹
D.帶鏈棧
。2)下列數據結果中,能夠按照“先進后出”原則存取數據的是
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
。3)對于循環(huán)隊列,下列敘述中正確的是
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
。4)算法的空間復雜度是指
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數據量
C.算法程序中的語句或指令條數
D.算法在執(zhí)行過程中所需要的臨時工作單元數
。5)軟件設計中劃分模塊的一個準則是
A.低內聚低耦合
B.高內聚低耦合
C.低內聚高耦合
D. 高內聚高耦合
(6)下列選項中不屬于結構化程序設計原則的是
A.可封裝的
B. 自頂向下
C.模塊化
D. 逐步求精
。7)軟件詳細設計產生的圖如下:
該圖是
A.N-S圖
B.PAD圖
C.程序流程圖
D. E-R圖
(8)數據庫管理系統(tǒng)是
A.操作系統(tǒng)的一部分
B.在操作系統(tǒng)支持下的系統(tǒng)軟件
C.一種編譯系統(tǒng)
D. 一種操作系統(tǒng)
。9)在E-R圖中,用來表示實體聯系的圖形是
A.橢圓圖
B.矩形
C.菱形
D. 三角形
。10)有三個關系R,S和T如下:
其中關系T由關系R和S通過某種操作得到,該操作為
A.選擇
B.投影
C.交
D.并
(11)以下敘述中正確的是
A.程序設計的任務就是編寫程序代碼并上機調試
B.程序設計的任務就是確定所用數據結構
C.程序設計的任務就是確定所用算法
D.以上三種說法都不完整
。12)以下選項中,能用作用戶標識符的是
A.void
B.8_8
C._0_
D.unsigned
。13)閱讀以下程序
#include
main()
{ int case; float printF;
printf(“請輸入2個數:”);
scanf(“%d %f”,&case,&pjrintF);
printf(“%d %f ”,case,printF);
}
該程序編譯時產生錯誤,其出錯原因是
A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符
B.定義語句出錯,printF不能用作用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數使用
D.定義語句無錯,printf不能輸出case的值
。14)表達式:(int)((double)9/2)-(9)%2的`值是
A.0
B.3
C.4
D.5
。15)若有定義語句:int x=10;,則表達式x-=x+x的值為
A.-20
B.-10
C.0
D.10
。16)有以下程序
#include
main()
{ int a=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d ”,a=2*b);
}
程序運行后的輸出結果是
A.0,0
B.1,0
C.3,2
D.1,2
17)設有定義:int a=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是
A.if(a>B. c=a,a=b,b=c;
B.if(a>B. {c=a,a=b,b=c;}
C.if(a>B. c=a;a=b;b=c;
D.if(a>B. {c=a;a=b;b=c;}
(18)有以下程序
#include
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k
case 2: c++;break;
case 4: c+=2;break;
}
printf(“%d ”,C.;
}
程序運行后的輸出結果是
A.3
B.5
C.7
D.9
。19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是
A.if((a>b)&&(b>C.) k=1;
else k=0;
B.if((a>b)||(b>C. k=1;
else k=0;
C.if(a<=B. k=0;
else if(b<=C.k=1;
D.if(a>B. k=1;
else if(b>C.k=1;
else k=0;
20)有以下程序
#include
main()
{ char s[]={“012xy”};int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=’a’&&s[i]<=’z’) n++;
printf(“%d ”,n);
}
程序運行后的輸出結果是
A.0
B.2
C.3
D.5
(21)有以下程序
#include
main()
{ int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d ”,k,n);
}
程序運行后的輸出結果是
A.0 2
B.1 3
C.5 7
D.1 2
(22)有以下定義語句,編譯時會出現編譯錯誤的是
A.char a=’a’;
B.char a=’ ’;
C.char a=’aa’;
D.char a=’x2d’;
。23)有以下程序
#include
main()
{ char c1,c2;
c1=’A’+’8’-‘4’;
c2=’A’+’8’-‘5’;
printf(“%c,%d ”,c1,c2);
}
已知字母A的ASCII碼為65,程序運行后的輸出結果是
A.E,68
B.D,69
C.E,D
D.輸出無定值
。24)有以下程序
#include
void fun(int p)
{ int d=2;
p=d++; printf(“%d”,p);}
main()
{ int a=1;
fun(a); printf(“%d ”,a);}
程序運行后的輸出結果是
A.32
B.12
C.21
D.22
(25)以下函數findmax擬實現在數組中查找最大值并作為函數值返回,但程序中有錯導致不能實現預定功能
#define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;i
{ max=MIN;
if(max
return max;
}
造成錯誤的原因是
A.定義語句int i,max;中max未賦初值
B.賦值語句max=MIN;中,不應給max賦MIN值
C.語句if(max
D.賦值語句max=MIN;放錯了位置
。26)有以下程序
#include
main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d,%d ”,m,n,*p,*q);
}
程序運行后的輸出結果是
A.1,2,1,2
B.1,2,2,1
C.2,1,2,1
D.2,1,1,2
。27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是
A.p=a
B.q[i]=a[i]
C.p=a[i]
D.p=&a[2][1]
。28)有以下程序
#include
#include
main()
{ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s ”,p);
}
程序運行后的輸出結果是
A.9,One*World
B.9,One*Dream
C.10,One*Dream
D.10,One*World
。29)有以下程序
#include
main()
{ int a[ ]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{ case 0:switch(a[i]%2)
{case 0:a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i[=0;
}
for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);
}
A.3 3 4 4
B.2 0 5 0
C.3 0 4 0
D.0 3 0 4
。30)有以下程序
#include
#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d ”,strlen(a),sizeof(a));
}
程序運行后的輸出結果是
A.7,4
B.4,10
C.8,8
D.10,10
。31)下面是有關C語言字符數組的描述,其中錯誤的是
A.不可以用賦值語句給字符數組名賦字符串
B.可以用輸入語句把字符串整體輸入給字符數組
C.字符數組中的內容不一定是字符串
D.字符數組只能存放字符串
(32)下列函數的功能是
fun(char * a,char * b)
{ while((*b=*a)!=’’) {a++,b++;} }
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有’’
(33)設有以下函數
void fun(int n,char * s) {……}
則下面對函數指針的定義和賦值均是正確的是
A.void (*pf)(); pf=fun;
B.viod *pf(); pf=fun;
C.void *pf(); *pf=fun;
D.void (*pf)(int,char);pf=&fun;
。34)有以下程序
#include
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf(“%d ”,s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序運行以后的輸出結果是
A.7
B.8
C.9
D.10
(35)有以下程序
#include
#define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf(“%d,%d ’,s,t);
}
程序運行后的輸出結果是
A.10,64
B.10,10
C.64,10
D.64,64
。36)下面結構體的定義語句中,錯誤的是
A.struct ord {int x;int y;int z;}; struct ord a;
B.struct ord {int x;int y;int z;} struct ord a;
C.struct ord {int x;int y;int z;} a;
D.struct {int x;int y;int z;} a;
。37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是
A.char str[ ]=”string”;c=str;
B.scanf(“%s”,C.;
C.c=get);
D.*c=”string”;
。38)有以下程序
#include
#include
struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,”ZhangDa”,1098.0};
a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;
}
struct A f(struct A t)
( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )
程序運行后的輸出結果是
A.1001,ZhangDa,1098.0
B.1001,ZhangDa,1202.0
C.1001,ChangRong,1098.0
D.1001,ChangRong,1202.0
。39)若有以下程序段
int r=8;
printf(“%d ”,r>>1);
輸出結果是
A.16
B.8
C.4
D.2
。40)下列關于C語言文件的敘述中正確的是
A.文件由一系列數據依次排列組成,只能構成二進制文件
B.文件由結構序列組成,可以構成二進制文件或文本文件
C.文件由數據序列組成,可以構成二進制文件或文本文件
D.文件由字符序列組成,其類型只能是文本文件
【3月計算機二級考試《C++》真題】相關文章:
2011年9月計算機二級考試VB真題03-25
2009年9月計算機等級考試二級ACCESS筆試真題12-11
計算機二級考試Java選擇真題09-27
3月全國計算機等級考試二級VFP考試真題09-26