- 相關推薦
上半年全國計算機二級C++考試真題
一、選擇題
(1)下列敘述中正確的是
A)棧是“先進先出”的線性表
B)隊列是“先進后出”的線性表
C)循環(huán)隊列是非線性結構
D)有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構
(2)支持子程序調用的數據結構是
A)棧
B)樹
C)隊列
D)二叉樹
(3)某二叉樹有5個度為z的結點,則該二叉樹中的葉子結點數是
A)10
B)8
C)6
D)4
(4)下列排序方法中,最壞情況下比較次數最少的是
A)冒泡排序
B)簡單選擇排序
C)直接插入排序
D)堆排序
(5)軟件按功能可以分為: 應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是
A)編譯程序
B)操作系統(tǒng)
C)教務管理系統(tǒng)
D)匯編程序
(6)下面敘述中錯誤的是
A)軟件測試的目的是發(fā)現錯誤并改正錯誤
B)對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C)程序調試通常也稱為Debug
D)軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性
(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是
A)提高耦合性降低內聚性有利他哦高模塊的獨立性
B)降低耦合性提高內聚性有利于提高模塊的獨立性
C)耦合性是指一個模塊內部各個元索間彼此結合的緊密程度
D)內聚性是指模塊間互相連接的緊密程度
(8)數據庫應用系統(tǒng)中的核心問題是
A)數據庫設計
B)數據庫系統(tǒng)設計
C)數據庫維護
D)數據庫管理員培訓
(9)有如下程序:
#include
using namespace std;
class ONE{
int c;
public:
ONE():c(0){cout<<1;}
ONE(int n):c (n){cout<<2;}
};
class TWO{
ONE onel;
ONE one2;
public:
TWO(int m):one2(m){cout<<3;}
};
int main()t
TWO t(4)
return 0
}
運行時的輸出結果是
A)3
B)23
C)123
D)213
(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為
A)屬性
B)鍵
C)關系
D)域
(11)對C++編譯器區(qū)分重載函數無任何意義的信息是
A)參數類型
B)參數個數
C)返回值類型
D)常成員函數關鍵字coast
(12)有如下類定義和變量定義:
class A{
publie:
A(){data=0;}
~A(){}
int GetData ( ) coast { return data;}
void SetData(int n) {data=n;}
private:
int data;
};
ccnst A a;
A b;
下列函數調用中錯誤的是
A)a .GetData();
B)a .SetData(10);
C)b .GetData();
D)b .SetData(10);
(13)有如下類定義和變量定義:
class Parents{
public:
int publicuata;
private:
int privateData;
};
class ChildA:public Parents{/*類體略*/};
class ChildB:private Parents{/*類體略*/);
ChildA a;
ChildBb;
下列語句中正確的是
A)cout< B)cout< C)cout< D)cout<
(14)運算符重載時不需要保持的性質是
A)操作數個數
B)操作數類型
C)優(yōu)先級
D)結合性
(15)下列關于函數模板的描述中,錯誤的是
A)從模板實參表和從模板函數實參表獲得信息矛盾時,以模板實參的信息為準
B)對于常規(guī)參數所對應的模板實參,任何情況下都不能省略
C)虛擬類型參數沒有出現在模板函數的形參表中時,不能省略模板實參
D)模板參數表不能為空
(16)要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是
A)ifstream fin=ifstream.open(“file.dat”);
B)ifstream*fir.=new ifstream(“file.dat”);
C)ifstream fin; fin.open(“file.dat”);
D)ifstream *fin=new ifstream( );fin一>open(“file.dat”);
(17)下列描述中,不屬于面向對象思想主要特征的是
A)封裝性
B)跨平臺性
C)繼承性
D)多態(tài)性
(18)有如下程序段:
Tnt i=4;int j=l;
int main(){
int i=8,j=i;
cout< }
運行時的輸出結果是
A)44
B)41
C)88
D)81
(19)有如下程序段:
int i=5;
while(int i=0){cout《'*';i--;}
運行時輸出“*”的個數是
A)0
B)1
C)5
D)無窮
(20)己知有數組定義
char a[3][4];
下列表達式中錯誤的是
A)a[2]=“WIN”
B)strcpy(a[2],“WIN”)
C)a [2][3]='W'
D)a[0][1]=a[0][1]
(21)已知函數fun的原型為
int fun(int,int,int);
下列重載函數原型中錯誤的是
A)char fun(int,int);
B)double fun(int,int,double);
C)int fun(int,char*);
D)float fun (int, int, int);
(22)建立一個類對象時,系統(tǒng)自動調用
A)析構函數
B)構造函數
C)靜態(tài)函數
D)友元函數
(23)通過派生類的對象可直接訪問其
A)公有繼承基類的公有成員
B)公有繼承基類的私有成員
C)私有繼承基類的公有成員
D)私有繼承基類的私有成員
(24)己知表達式++a中的“++”是作為成員函數重載的運算符,則與十+a等效的運算符函數調用形式為
A)a .orerator++(1)
B)operator++(a)
C)operator++(a,l)
D)a.operator++( )
(25)在定義一個類模板時,模板形參表是用一對括號括起來的,所采用的括號是
A)( )
B)[ ]
C)< >
D){ }
(26)當使用ifstream流類定義一個流對象并打開一個磁盤文件時,文件的默認打開方式為
A)ios_base::in
B)ios_base::in|ios_base::out
C)ios_base::out
D)ios_base::in&ios_base::out
(27)有如下程序:
#include
#include
using namespace std;
class XCD{
char* a;
int b;
public:
XCD(char* aa, int bb){
a=new char[strlen(aa)+1];
strcpty(a,aa);
b=bb;
}
Char* Geta (){return a;)
int Getb(){ return b;}
};
int main(){
char *pl=“abcd”,*p2=“weirong”;
int dl=6, d2=8;
XCD x(pl,dl),Y(p2,d2);
cout< return 0;
}
運行時的輸出結果是
A)12
B)16
C)14
D)11
(28)有如下程序:
#include
#include
using namespace std;
class XCF{
int a;
public:
XCF(int aa=0):a (aa){cout<<“1”;}
XCF(XCF& x){a=x .a; cout<<“2”;)
~XCF(){cout< int Geta(){return a;}
};
int main(){
XCF dl(5),d7 (dl);
XCF *pd=new XCF(8);
cout
delete pd;
return 0;
}
運行時的輸出結果是
A)121SS88
B)12188SS
C)12185
D)128512
(29)已知類MyClass聲明如下:
class MyClass{
int n;
public;
MyClass(int k):n(k){}
int getValue()const{return n;}
};
在下列數組定義中正確的是
A)MyClass x1[2];
B)MyClass x2[2]={new MyClass(1),new MyClass(2)};
C)MyClass *x3[2];
D)MyClass *x4[2]={MyClass(1),MyClass(2)};
(30)有如下程序:
#include
using namespace std;
class AA{
lilt k;
protected:
int n;
void setK(int k){ this->k=k;}
public:
void setN(int n){ this->n=n;}
};
class BB: public }{/*類體略*/};
int main(){
BB x_ ; //1
x .n=1; //2
x.setN (2); //3
x.k=3; //4
x .setK(4);
return 0;
}
在標注號碼的四條語句中正確的是
A)1
B)2
C)3
D)4
(31)有如下類定義:
class XX{
int xx;
public:
XX():xx(0){cout<<' A';}
XX(int n):xx ( n){tout<<' B';}
};
Class YY:public XX{
Int yy;
public:
YY():yy ( 0){cout+yy;}
YY(int n):XX(n+1),yy(n){cout< YY (int m, int n):XX (m),yy(n){cout< };
下列選項中,輸出結果為A0的語句是
A)YY y1(0,0);
B)YY y2(1);
C)YY y3(0);
D)YY y4;
(32)有如下程序:
#include
Using namespace std;
class A{
public:
virtual void f(){cout+1;}
void g(){cout<<2;}
};
class B:public A{
public:
virtual void f(){cout<<3;}
void g(){ecut<<4;}
};
void show(A &a){a.f();a.g( );}
int main(){
B b;
show(b);
return 0;
}
運行時的輸出結果是
A)12
B)34
C)14
D)32
(33)有如下程序:
#include
using namespace std;
class Pair{
int m;
int n;
public:
Pair(int i,int j):m(i),n(j){}
boot operator >(pair p)const; //須在類體外給出定義
};
int main(){
Pair Al(3,4),p2(4,3);p3(4,5);
Cout<<(pl>p2)<<(p2>P1)<<(p2>p3)<<(p3>p2);
return 0;
}
運算符函數。operator>的功能是比較兩個Pair對象的大小,當左邊對象大時,返回true,否則返回false。比較規(guī)則是首先比較兩對象的m成員,m大者為大;當m相等時比較n,n大者為大。程序輸出0101,下列對運算符重載函數的正確定義是
A)bool Pair::operator>(Pair p)const
{if (m!=p.m) return m>p.m; return n>p.n;}
B)bool Pair:;operator>(Pair p)
{if (m!=p.m) return m>p.m; return n>p.n;}
C)bool Pair::operator>(Pair p)const
{if (m>p.m) return true; return n>p.n;}
D)bool Pair:;operator>(Pair p)
{if (m>p.m) return true; return n>p.n;}
(34)假定下列語句都是程序運行后首次執(zhí)行的輸出語句,其中輸出結果與另外三條語句不同的語句是
A)cout< B)cout< C)cout<<123< D)cout<
二、填空題
(1)假設用一個長度為50的數組(數組元索的下標從0到49)作為棧的存化空間,棧底指針bottom指間棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有【1】個元素。
(2)軟件測試可分為白盒測試和黑盒測試。基本路徑測試屬于【2】測試。
(3)符合結構化原則的三種基本控制結構是:選擇結構、循環(huán)結構和【3】。
(4)數據庫系統(tǒng)的核心是【4】。
(5)在E-K圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是【5】框。
(6)有如下程序段:
int x=1,Y=2,z=3;
x=x^z;
y=y^z;
z=x^y;
cout< 執(zhí)行這個程序段的輸出是【6】。
(7)有如下程序段:
fer(int i=1; i<=50;i++){
if(i%3 != 0)
continue;
else
if(i%5!=0)
continue;
tout< }
執(zhí)行這個程序段的輸出是【7】。
(8)有如下程序段:
Char c [20]=“examination”;
c[4]=0;
cout< 執(zhí)行這個程序段的輸出是【8】。
(9)下面的函數利用遞歸實現了求1+2+3+……+n的功能:
int sum(int n){
if(n==0)
return 0;
else
return n+sum(n-1);
}
在執(zhí)行sum(10)的過程中,遞歸調用sum函數的次數是【9】。
(10)非成員函數應該聲明為類【10】函數才能訪問該類的私有成員。
(11)有如下程序:
#include
using namespace std;
class Monitor{
public:
Monitor(char t):type (t){}
void print( ) const
{cout<<“The type of monitor is”< private:
char type;
};
class Computer{
public:
Computer(int i,char c): 【11】{}
void Print()const
{cout<<“The computer is”< private:
int id;
Monitor mon;
};
const Computer myComputer(101,'B‘);
myComputer .Print();
return 0;
}
請將程序補充完整,使程序在運行時輸出:
The computer is 101
'The type of monitor i.s 8
(12)有如下程序:
#include
using namespace std
class Animal{
public:
virtual char* getType()const { return “Animal”;}
virtual char* getVoice()const { return “Voice”;}
};
Class Dog : public Animal {
public:
char* getType ( ) const {return “Dog”;}
char* getVoice ( ) const {return “Woof”}
};
void type(Animal& a) {cout< void speak(Animal a) {cout< int main( ) {
Dog d; type (d);cout<<“ speak”;speak(d);cout< return 0;
}
運行時的輸出結果是【12】。
(13)補充完整下面的類定義:
const double PI=3 .14;
class Circle{ //圓形物體的抽象基類
protected:
double r; //半徑
public:
Circle(double radius=0):r(radius){}
【13】;//計算圓形物體表面積的純虛函數聲明
};
class Cylinder:public Circle { //圓柱體類
double h; //高度
public:
Cylindr(double radius=0, doubli height=0):
Circle(radius),h (height){}
Virtual double Area() { //計算圓柱體的表面積
return 2*PI*r*(r+h);
}
};
(14)補充完整下面的類定義:
class XCH{
char* a;
public:
XCH(char* as) { //構造函數
a=new char[strlen(aa)+1];
strcpy(a,aa);
}
XCH& operator=(const XCH& x) //重載賦值函數
Delele []a;
A=new char[strlen(x.a)+l];
strcpy(a, x .a)
【14】;
}
~XCH() {delete []a;}
};
(15)補充完整下面的模板定義:
template //Type為類型參數
class Xtwo{ //由兩個Type類型的數據成員構成的模板類
Type a;
Type b;
public:
Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){}
int Ccmpare (){//比較a和b的大小
if (a>b)returm 1;
else if(a==b) return 0;
else return -1;
}
Type Snm() {return a+b;} //返回a和b之和
Type Mult(); //函數聲明,返回a和b之乘積
};
Template
【15】::Mult(){return a*b;} //Mult 函數的類外定義
【上半年全國計算機二級C++考試真題】相關文章:
全國計算機二級考試C++真題03-21
全國計算機二級考試《C++》筆試樣卷06-12
計算機等級考試二級C++筆試選擇題04-23
全國計算機二級《C++》上機試題及答案03-28
全國計算機等級二級考試java選擇題練習04-18