- 相關(guān)推薦
2009年9月二級(jí)C++筆試
百分網(wǎng)小編收集整理了2009年9月全國(guó)計(jì)算機(jī)二級(jí)筆試C++,請(qǐng)閱讀。一、選擇題(1-10,21-40每題2分,11-20每題1分)
(1)下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線(xiàn)性結(jié)構(gòu)的是
A)循環(huán)隊(duì)列B)帶鏈隊(duì)列C)二叉樹(shù)D)帶鏈棧
(2)下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是
A)循環(huán)隊(duì)列B)棧C)隊(duì)列D)二叉樹(shù)
(3)對(duì)于循環(huán)隊(duì)列,下列敘述中正確的是
A)隊(duì)頭指針是固定不變的B)隊(duì)頭指針一定大于隊(duì)尾指針C)隊(duì)頭指針一定小于隊(duì)尾指針D)隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針
(4)算法的空間復(fù)雜度是指
A)算法在執(zhí)行過(guò)程中所需要的計(jì)算機(jī)存儲(chǔ)空間B)算法所處理的數(shù)據(jù)量C)算法程序中的語(yǔ)句或指令條數(shù)D)算法在執(zhí)行過(guò)程中所需要的臨時(shí)工作單元數(shù)
(5)軟件設(shè)計(jì)中劃分模塊的一個(gè)準(zhǔn)則是
A)低內(nèi)聚低耦合B)高內(nèi)聚低耦合C)低內(nèi)聚高耦合D)高內(nèi)聚高耦合
(6)下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是
A)可封裝B)自頂向下C)模塊化D)逐步求精
(7)軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如下:
該圖是
A)N-S圖B)PAD圖C)程序流程圖D)E-R圖
(8)數(shù)據(jù)庫(kù)管理系統(tǒng)是
A)操作系統(tǒng)的一部分B)在操作系統(tǒng)支持下的系統(tǒng)軟件C)一種編譯系統(tǒng)D)一種操作系統(tǒng)
(9)在E-R圖中,用來(lái)表示實(shí)體聯(lián)系的圖形是
A)橢圓形B)矩形C)菱形D)三角形
(10)有三個(gè)關(guān)系R,S,和T如下:
R #FormatTableID_0#
S #FormatTableID_1#
T #FormatTableID_2#
其中關(guān)系T由關(guān)系R和S通過(guò)某種操作得到,該操作為
A)選擇B)投影C)交D)并
(11)已知函數(shù)FA調(diào)用FB,若要把這兩個(gè)函數(shù)定義在同一個(gè)文件中,則
A)FA必須定義在FB之前
B)FB必須定義在FA之前
C)若FA定義在FB之后,則FA的原型必須出現(xiàn)在FB的定義之前
D)若FB定義在FA之后,則FB的原型必須出現(xiàn)在FA的定義之前
(12)有如下兩個(gè)類(lèi)定義
class AA{};
class BB{ AA v1,*v2; BB v3; int *v4; };
其中有一個(gè)成員變量的定義是錯(cuò)誤的,這個(gè)變量是
A)v1 B)v2 C)v3 D)v4
(13)有如下類(lèi)定義:
class XX{ int xdata;
public: XX(int n=0) : xdata (n) { } };
class YY : public XX{ int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) { } };
YY類(lèi)的對(duì)象包含的數(shù)據(jù)成員的個(gè)數(shù)是
A)1 B)2 C)3 D)4
(14)下列有關(guān)運(yùn)算符函數(shù)的描述中,錯(cuò)誤的是
A)運(yùn)算符函數(shù)的名稱(chēng)總是以operator為前綴 B)運(yùn)算符函數(shù)的參數(shù)可以是對(duì)象
C)運(yùn)算符函數(shù)只能定義為類(lèi)的成員函數(shù) D)在表達(dá)式中使用重載的運(yùn)算符相當(dāng)于調(diào)用運(yùn)算符重載函數(shù)
(15)下列關(guān)于模板形參的描述中,錯(cuò)誤的是
A)模板形參表必須在關(guān)鍵字template之后 B)模板形參表必須用括弧( )括起來(lái)
C)可以用class修飾模板形參 D)可以用typename修飾模板形參
(16)在下列枚舉符號(hào)中,用來(lái)表示“相對(duì)于當(dāng)前位置”文件定位方式的是
A)ios_base::cur B)ios_base::beg C)ios_base::out D)ios_base::end
(17)下列字符串可以用作C++標(biāo)識(shí)符的是
A)2009var B)goto C)test - 2009 D)_123
(18)下列枚舉類(lèi)型的定義中,包含枚舉值3的是
A)enum test {RED, YELLOW, BLUE, BLACK}; B)enum test {RED, YELLOW=4, BLUE, BLACK};
C)enum test {RED=-1, YELLOW,BLUE, BLACK}; D)enum test {RED, YELLOW=6, BLUE, BLACK};
(19)有如下程序段:
int i=1;
while (1) { i++; if(i == 10) break; if(i%2 == 0) cout << '*'; }
執(zhí)行這個(gè)程序段輸出字符*的個(gè)數(shù)是
A)10 B)3 C)4 D)5
(20)已知數(shù)組arr的定義如下:
int arr[5] = {1,2,3,4,5}; 下列語(yǔ)句中輸出結(jié)果不是2的是
A)cout << *arr+1 <<endl; B)cout << *(arr+1)<<endl; C)cout << arr[1] <<endl; D)cout << *arr <<endl;
(21)計(jì)算斐波那契數(shù)列第n項(xiàng)的函數(shù)定義如下:
Int fib(int n){ if (n == 0) return 1; else if (n == 1) return 2; else return fib(n-1)+fib(n-2); }
若執(zhí)行函數(shù)調(diào)用表達(dá)式fib(2),函數(shù)fib被調(diào)用的次數(shù)是
A)1 B)2 C)3 D)4
(22)Sample是一個(gè)類(lèi),執(zhí)行下面語(yǔ)句后,調(diào)用Sample類(lèi)的構(gòu)造函數(shù)的次數(shù)是
Sample a[2], *p = new Sample;
A)0 B)1 C)2 D)3
(23)下列關(guān)于虛基類(lèi)的描述中,錯(cuò)誤的是
A)使用虛基類(lèi)可以消除由多繼承產(chǎn)生的二義性 B)構(gòu)造派生類(lèi)對(duì)象時(shí),虛基類(lèi)的構(gòu)造函數(shù)只被調(diào)用一次
C)聲明“class B : virtual public A”說(shuō)明類(lèi)B為虛基類(lèi) D)建立派生類(lèi)對(duì)象時(shí),首先調(diào)用虛基類(lèi)的構(gòu)造函數(shù)
(24)將運(yùn)算符重載為類(lèi)成員函數(shù)時(shí),其參數(shù)表中沒(méi)有參數(shù),說(shuō)明該運(yùn)算是
A)不合法的運(yùn)算符 B)一元運(yùn)算符 C)無(wú)操作數(shù)的運(yùn)算符 D)二元運(yùn)算符
(25)有如下模板聲明:
template<typename T1, typename T2> class A;
下列聲明中,與上述聲明不等價(jià)的是
A)template <class T1,class T2> class A; B)template <class T1,typename T2> class A;
C)template <typename T1,class T2> class A; D)template <typename T1,T2> class A;
(26)下列關(guān)于C++流的描述中,錯(cuò)誤的是
A)cout>>'A'表達(dá)式可輸出字符A B)eof()函數(shù)可以檢測(cè)是否到達(dá)文件尾
C)對(duì)磁盤(pán)文件進(jìn)行流操作時(shí),必須包含頭文件fstream D)以ios_base::out模式打開(kāi)的文件不存在時(shí),將自動(dòng)建立一個(gè)新文件
27)有如下程序:
#include <iostream>
using namespace std;
class Toy{ public: Toy(char* _n) { strcpy (name,_n); count++;} ~Toy(){ count--; } char* GetName(){ return name; } static int getCount(){ return count; }
private:
char name[10];
static int count;
};
int Toy::count=0;
int mail(){
Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);
cout<<t1.getCount()<<endl;
return 0; }
運(yùn)行時(shí)的輸出結(jié)果是
A)1 B)2 C)3 D)運(yùn)行時(shí)出錯(cuò)
。28)有如下程序
#include<iostream> using namespace std;
class A { public: A(int i):rl(i) { } void print( ) {cout<<'e'<<r1<<'-';} void print( ) const {cout<<'C'<<r1*r1<<'-';} private: int rl; };
int main(){ A al(2); const A a2(4); al.print(); a2.print(); return 0; }
運(yùn)行時(shí)的輸出結(jié)果是
A)運(yùn)行時(shí)出錯(cuò) B)E2-C16- C)C4-C16- D)E2-E4-
29)有如下程序:
#include<iostream>
using namespace std;
class Name{
char name[20];
public:
Name(){
strcpy(name,""); cout<<'?';
}
Name(char *fname)){
strcpy(name,fname); cout<'?';
}
};
int main(){
Name names[3]={Name(“張三”),Name(“李四”)};
Return 0;
}
運(yùn)行此程序輸出符號(hào)?的個(gè)數(shù)是
A)0 B)1 C)2 D)3
(30)有如下程序:
#include<iostream>
using namespace std;
public:
AA(){ cout<<'1'; }
};
class BB: public AA{
int k;
public:
BB():k(0){ cout<<'2'; }
BB(int n):k(n){ cout<<'3';}
}
int main(){
BB b(4), c;
return 0;
}
運(yùn)行時(shí)的輸出結(jié)果是
A)1312 D)132 C)32 D)1412
(31)有如下程序:
#include<iostream>
using namespace std;
class C1{
public:
~C1(){ cout<<1; }
};
Class C2: public c1{
public:
~c2(){ cout<<2; }
};
int main(){
C2 cb2;
C1 *cb1;
return 0;
}
運(yùn)行時(shí)的輸出結(jié)果是
A)121 B)21 C)211 D)12
(32)有如下程序
#include<iostream>
using namespace std;
class Publication{ //出版物類(lèi)
char name[30];
public:
Publication(char *name="未知名稱(chēng)"){
strcpy(this->name,name);
}
const char * getName()const{ return name; }
virtual const char * getType()const{ return "未知類(lèi)型";}
};
class Book: public Publication{ //書(shū)類(lèi)
public:
Book(char *name): Publication(name){}
virtual const char * getType()const{ return "書(shū)";}
};
void showPublication( Publication &p){
cout<<p.getType()<<":"<<p.getName()<<endl;
}
int main(){
Book book("精彩人生");
showPublication(book);
return 0;
}
運(yùn)行時(shí)的輸出結(jié)果是
A)未知類(lèi)型:未知名稱(chēng) B)未知類(lèi)型:精彩人生C)書(shū):未知名稱(chēng) D)書(shū):精彩人生
(33)下列關(guān)于運(yùn)算符重載的描述中,錯(cuò)誤的是
A)::運(yùn)算符不能重載B)類(lèi)型轉(zhuǎn)換運(yùn)算符只能作為成員函數(shù)重載C)將運(yùn)算符作為非成員函數(shù)重載時(shí)必須定義為友元D)重載[]運(yùn)算符應(yīng)完成“下標(biāo)訪問(wèn)”操作
(34)有如下程序:
#include<iostream>
#include<iomanip>
Using namespace std;
int main(){
int s[]={123, 234};
cout<<right<<setfill('*')<<setw(6);
for(int i=0; i<2; i++) { cout<<s[i]<<endl; }
return 0;
}
運(yùn)行時(shí)的輸出結(jié)果是
A)123 B)***123 C)***123 D)***123
234 234 ***234 234***
(35)有如下類(lèi)定義
class A {char *a;public:A():a(0){}A(char *aa){ //把a(bǔ)a所指字符串拷貝到a所指向的存儲(chǔ)空間
a= ;strcpy(a,aa);
strcpy(a,aa);
}
~A() {delete []a;}
};
橫線(xiàn)處應(yīng)填寫(xiě)的表達(dá)式是
A)nes char[strlen(aa)+1] B)char[strlen(aa)+1]
C)char[strlen(aa)] D)new char[sizeof(aa)-1]
二、填空題(每空2分,共30分)
(1)某二叉樹(shù)有5個(gè)度為2的結(jié)點(diǎn)以及3個(gè)度為1的結(jié)點(diǎn),則該二叉樹(shù)中共有 【1】 個(gè)結(jié)點(diǎn)。
(1)某二叉樹(shù)有5個(gè)度為2的結(jié)點(diǎn)以及3個(gè)度為1的結(jié)點(diǎn),則該二叉樹(shù)中共有 【1】 個(gè)結(jié)點(diǎn)。
(2)程序流程圖中的菱形框表示的是 【2】 。
(3)軟件開(kāi)發(fā)過(guò)程主要分為需求分析、設(shè)計(jì)、編碼與測(cè)試四個(gè)階段,其中 【3】 階段產(chǎn)生“軟件需求規(guī)格說(shuō)明書(shū)”。
(4)在數(shù)據(jù)庫(kù)技術(shù)中,實(shí)體集之間的聯(lián)系可以是一對(duì)一或一對(duì)多或多對(duì)多的,那么“學(xué)生”和“可選課程”的聯(lián)系為 【4】 。
(5)人員基本信息一般包括:身份證號(hào),姓名,性別,年齡等。其中可以作為主關(guān)鍵字的是 【5】 。
(6)若表達(dá)式(x+(y-z)*(m/n))+3中的變量均為double型,則表達(dá)式值的類(lèi)型為 【6】 。
(7)有如下循環(huán)語(yǔ)句:
For(int i=50; i>20; i-=2) cout<<i<<',';
運(yùn)行時(shí)循環(huán)體的執(zhí)行次數(shù)是 【7】 。
(8)利用表達(dá)式a[i]可以訪問(wèn)int型數(shù)組a中下標(biāo)為i的元素。在執(zhí)行了語(yǔ)句int *p=a;后,利用指針p也可訪問(wèn)該元素,相應(yīng)的表達(dá)式是 【8】 。
(9)下面是一個(gè)遞歸函數(shù),其功能是使數(shù)組中的元素反序排列。請(qǐng)將函數(shù)補(bǔ)充完整。
void reverse(int *a, int size){
if(size<2) return;
int k=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1, 【9】 );
}
(10)類(lèi)Sample的構(gòu)造函數(shù)將形參data賦值給數(shù)據(jù)成員data。請(qǐng)將類(lèi)定義補(bǔ)充完整。
class Sample{
public:
Sample(int data=0);
Private:
Int data;
};
Sample::Sample(int data){
【10】
}
(11)有如下類(lèi)定義:
class Sample{
public:
Sample();
~Sample();
Private:
Static int date;
};
將靜態(tài)數(shù)據(jù)成員data初始化為0的語(yǔ)句是 【11】 。
(12)“圖形”類(lèi)Shape中定義了純虛函數(shù)CalArea(),“三角形”類(lèi)Triangle繼承了類(lèi)Shape,請(qǐng)將Triangle類(lèi)中的CalArea函數(shù)補(bǔ)充完整。
class Shape{
public:
virtual int CalArea()=0;
}
class Triangle: public Shape{
public:
Triangle{int s, int h}: side(s),height(h) {}
【12】 { return side*height/2 ; }
private:
int side;
int height;
};
(13)有如下程序:
#include <iostream>
using namespace std;
class GrandChild{
public:
GrandChild(){ strcpy (name,"Unknown"); }
const char * getName()const { return name; }
virtual char * getAddress()const=0;
private:
char name[20];
};
class GrandSon : public GrandChild{
public:
GrandSon{char *name} {}
Char * getAddress() const { return "Shanghai";}
};
int main(){
GrandChild *gs=new GrandSon("Feifei");
cout<<gs->getName()<<"住在"<<gs->getAddress()<<endl;
delete gs;
return 0;
}
運(yùn)行時(shí)的輸出結(jié)果是 【13】 。
(14)如下程序定義了“單詞”類(lèi)word,類(lèi)中重載了<運(yùn)算符,用于比較“單詞”的大小,返回相應(yīng)的邏輯值。程序的輸出結(jié)果為:After Sorting: Happy Welcome,請(qǐng)將程序補(bǔ)充完整。
#include <iostream>
#include <string>
using namespace std;
class Word{
public:
Word(string s) : str(s) { }
string getStr(){ return str; }
【14】 const { return (str<w.str); }
friend ostream& operator << (ostream& output, const Word &w)
{ output<<w.str; return output; }
private:
string str;
};
Int main(){
Word w1("Happy"),w2("Welcome");
Cout<<"After sorting: ";
if(w1<w2) cout<<w1<<' '<<w2;
else cout<<w2<<' '<<w1;
return 0;
}
(15)請(qǐng)將下列模板類(lèi)Data補(bǔ)充完整。
template <typename T>
class Data{
public:
void put (T v) { val=v; }
【15】 get() //返回?cái)?shù)據(jù)成員val的值,返回類(lèi)型不加轉(zhuǎn)換
{ return val; }
private:
T val;
};
參考答案
選擇題
(1)C +(5)身份證號(hào) (6)double (7)15 (8)*(p+i)
(9)size-1 (10)this->data=data;
(11)int Sample::data = 0;
(12)int CalArea(size,height)
(13)Unknown住在Shanghai
(14)bool operator < (Word w) (15)T
【9月二級(jí)C++筆試】相關(guān)文章:
2008年9月二級(jí)C++筆試08-07
計(jì)算機(jī)二級(jí)C++語(yǔ)言筆試試卷及答案03-10
計(jì)算機(jī)二級(jí)C++筆試選擇題08-13
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試題02-06
2010年9月全國(guó)計(jì)算機(jī)二級(jí)C++筆試05-31
全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試真題05-01
計(jì)算機(jī)等級(jí)考試二級(jí)C++筆試選擇題06-27