- 相關推薦
2009年9月二級C++筆試
百分網小編收集整理了2009年9月全國計算機二級筆試C++,請閱讀。一、選擇題(1-10,21-40每題2分,11-20每題1分)
(1)下列數據結構中,屬于非線性結構的是
A)循環隊列B)帶鏈隊列C)二叉樹D)帶鏈棧
(2)下列數據結構中,能夠按照“先進后出”原則存取數據的是
A)循環隊列B)棧C)隊列D)二叉樹
(3)對于循環隊列,下列敘述中正確的是
A)隊頭指針是固定不變的B)隊頭指針一定大于隊尾指針C)隊頭指針一定小于隊尾指針D)隊頭指針可以大于隊尾指針,也可以小于隊尾指針
(4)算法的空間復雜度是指
A)算法在執行過程中所需要的計算機存儲空間B)算法所處理的數據量C)算法程序中的語句或指令條數D)算法在執行過程中所需要的臨時工作單元數
(5)軟件設計中劃分模塊的一個準則是
A)低內聚低耦合B)高內聚低耦合C)低內聚高耦合D)高內聚高耦合
(6)下列選項中不屬于結構化程序設計原則的是
A)可封裝B)自頂向下C)模塊化D)逐步求精
(7)軟件詳細設計產生的圖如下:
該圖是
A)N-S圖B)PAD圖C)程序流程圖D)E-R圖
(8)數據庫管理系統是
A)操作系統的一部分B)在操作系統支持下的系統軟件C)一種編譯系統D)一種操作系統
(9)在E-R圖中,用來表示實體聯系的圖形是
A)橢圓形B)矩形C)菱形D)三角形
(10)有三個關系R,S,和T如下:
R #FormatTableID_0#
S #FormatTableID_1#
T #FormatTableID_2#
其中關系T由關系R和S通過某種操作得到,該操作為
A)選擇B)投影C)交D)并
(11)已知函數FA調用FB,若要把這兩個函數定義在同一個文件中,則
A)FA必須定義在FB之前
B)FB必須定義在FA之前
C)若FA定義在FB之后,則FA的原型必須出現在FB的定義之前
D)若FB定義在FA之后,則FB的原型必須出現在FA的定義之前
(12)有如下兩個類定義
class AA{};
class BB{ AA v1,*v2; BB v3; int *v4; };
其中有一個成員變量的定義是錯誤的,這個變量是
A)v1 B)v2 C)v3 D)v4
(13)有如下類定義:
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類的對象包含的數據成員的個數是
A)1 B)2 C)3 D)4
(14)下列有關運算符函數的描述中,錯誤的是
A)運算符函數的名稱總是以operator為前綴 B)運算符函數的參數可以是對象
C)運算符函數只能定義為類的成員函數 D)在表達式中使用重載的運算符相當于調用運算符重載函數
(15)下列關于模板形參的描述中,錯誤的是
A)模板形參表必須在關鍵字template之后 B)模板形參表必須用括弧( )括起來
C)可以用class修飾模板形參 D)可以用typename修飾模板形參
(16)在下列枚舉符號中,用來表示“相對于當前位置”文件定位方式的是
A)ios_base::cur B)ios_base::beg C)ios_base::out D)ios_base::end
(17)下列字符串可以用作C++標識符的是
A)2009var B)goto C)test - 2009 D)_123
(18)下列枚舉類型的定義中,包含枚舉值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 << '*'; }
執行這個程序段輸出字符*的個數是
A)10 B)3 C)4 D)5
(20)已知數組arr的定義如下:
int arr[5] = {1,2,3,4,5}; 下列語句中輸出結果不是2的是
A)cout << *arr+1 <<endl; B)cout << *(arr+1)<<endl; C)cout << arr[1] <<endl; D)cout << *arr <<endl;
(21)計算斐波那契數列第n項的函數定義如下:
Int fib(int n){ if (n == 0) return 1; else if (n == 1) return 2; else return fib(n-1)+fib(n-2); }
若執行函數調用表達式fib(2),函數fib被調用的次數是
A)1 B)2 C)3 D)4
(22)Sample是一個類,執行下面語句后,調用Sample類的構造函數的次數是
Sample a[2], *p = new Sample;
A)0 B)1 C)2 D)3
(23)下列關于虛基類的描述中,錯誤的是
A)使用虛基類可以消除由多繼承產生的二義性 B)構造派生類對象時,虛基類的構造函數只被調用一次
C)聲明“class B : virtual public A”說明類B為虛基類 D)建立派生類對象時,首先調用虛基類的構造函數
(24)將運算符重載為類成員函數時,其參數表中沒有參數,說明該運算是
A)不合法的運算符 B)一元運算符 C)無操作數的運算符 D)二元運算符
(25)有如下模板聲明:
template<typename T1, typename T2> class A;
下列聲明中,與上述聲明不等價的是
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)下列關于C++流的描述中,錯誤的是
A)cout>>'A'表達式可輸出字符A B)eof()函數可以檢測是否到達文件尾
C)對磁盤文件進行流操作時,必須包含頭文件fstream D)以ios_base::out模式打開的文件不存在時,將自動建立一個新文件
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; }
運行時的輸出結果是
A)1 B)2 C)3 D)運行時出錯
。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; }
運行時的輸出結果是
A)運行時出錯 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;
}
運行此程序輸出符號?的個數是
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;
}
運行時的輸出結果是
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;
}
運行時的輸出結果是
A)121 B)21 C)211 D)12
(32)有如下程序
#include<iostream>
using namespace std;
class Publication{ //出版物類
char name[30];
public:
Publication(char *name="未知名稱"){
strcpy(this->name,name);
}
const char * getName()const{ return name; }
virtual const char * getType()const{ return "未知類型";}
};
class Book: public Publication{ //書類
public:
Book(char *name): Publication(name){}
virtual const char * getType()const{ return "書";}
};
void showPublication( Publication &p){
cout<<p.getType()<<":"<<p.getName()<<endl;
}
int main(){
Book book("精彩人生");
showPublication(book);
return 0;
}
運行時的輸出結果是
A)未知類型:未知名稱 B)未知類型:精彩人生C)書:未知名稱 D)書:精彩人生
(33)下列關于運算符重載的描述中,錯誤的是
A)::運算符不能重載B)類型轉換運算符只能作為成員函數重載C)將運算符作為非成員函數重載時必須定義為友元D)重載[]運算符應完成“下標訪問”操作
(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;
}
運行時的輸出結果是
A)123 B)***123 C)***123 D)***123
234 234 ***234 234***
(35)有如下類定義
class A {char *a;public:A():a(0){}A(char *aa){ //把aa所指字符串拷貝到a所指向的存儲空間
a= ;strcpy(a,aa);
strcpy(a,aa);
}
~A() {delete []a;}
};
橫線處應填寫的表達式是
A)nes char[strlen(aa)+1] B)char[strlen(aa)+1]
C)char[strlen(aa)] D)new char[sizeof(aa)-1]
二、填空題(每空2分,共30分)
(1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有 【1】 個結點。
(1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有 【1】 個結點。
(2)程序流程圖中的菱形框表示的是 【2】 。
(3)軟件開發過程主要分為需求分析、設計、編碼與測試四個階段,其中 【3】 階段產生“軟件需求規格說明書”。
(4)在數據庫技術中,實體集之間的聯系可以是一對一或一對多或多對多的,那么“學生”和“可選課程”的聯系為 【4】 。
(5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是 【5】 。
(6)若表達式(x+(y-z)*(m/n))+3中的變量均為double型,則表達式值的類型為 【6】 。
(7)有如下循環語句:
For(int i=50; i>20; i-=2) cout<<i<<',';
運行時循環體的執行次數是 【7】 。
(8)利用表達式a[i]可以訪問int型數組a中下標為i的元素。在執行了語句int *p=a;后,利用指針p也可訪問該元素,相應的表達式是 【8】 。
(9)下面是一個遞歸函數,其功能是使數組中的元素反序排列。請將函數補充完整。
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)類Sample的構造函數將形參data賦值給數據成員data。請將類定義補充完整。
class Sample{
public:
Sample(int data=0);
Private:
Int data;
};
Sample::Sample(int data){
【10】
}
(11)有如下類定義:
class Sample{
public:
Sample();
~Sample();
Private:
Static int date;
};
將靜態數據成員data初始化為0的語句是 【11】 。
(12)“圖形”類Shape中定義了純虛函數CalArea(),“三角形”類Triangle繼承了類Shape,請將Triangle類中的CalArea函數補充完整。
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;
}
運行時的輸出結果是 【13】 。
(14)如下程序定義了“單詞”類word,類中重載了<運算符,用于比較“單詞”的大小,返回相應的邏輯值。程序的輸出結果為:After Sorting: Happy Welcome,請將程序補充完整。
#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)請將下列模板類Data補充完整。
template <typename T>
class Data{
public:
void put (T v) { val=v; }
【15】 get() //返回數據成員val的值,返回類型不加轉換
{ return val; }
private:
T val;
};
參考答案
選擇題
(1)C +(5)身份證號 (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月二級C++筆試】相關文章:
全國計算機二級考試《C++》筆試樣卷06-12
2010年9月全國計算機二級C++筆試09-06
全國計算機等級考試二級C++筆試真題10-11
計算機等級考試二級C++筆試選擇題06-27
3月全國計算機等級考試二級C++筆試真題10-11
計算機二級C++函數考點07-22