- 相關推薦
2010年9月計算機二級考試C++筆試真題
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。
(1)下列敘述中正確的是
A)對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為n
B)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n/2)
C)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(log2n)
D)對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(n log2n)
(2)算法的時間復雜度是指
A)算法的執行時間
B)算法所處理的數據量
C)算法程序中的語句或指令條數
D)算法在執行過程中所需要的基本運算次數
(3)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是
A)編輯軟件
B)操作系統
C)教務管理系統
D)瀏覽器
(4)軟件(程序)調試的任務是
A)診斷和改正程序中的錯誤
B)盡可能多地發現程序中的錯誤
C)發現并改正程序中的所有錯誤
D)確定程序中錯誤的性質
(5)數據流程圖(DFD圖)是
A)軟件概要設計的工具
B)軟件詳細設計的工具
C)結構化方法的需求分析工具
D)面向對象方法的需求分析工具
(6)軟件生命周期可分為定義階段,開發階段和維護階段。詳細設計屬于
A)定義階段
B)開發階段
C)維護階段
D)上述三個階段
(7)數據庫管理系統中負責數據模式定義的語言是
A)數據定義語言
B)數據管理語言
C)數據操縱語言
D)數據控制語言
(8)在學生管理的關系數據庫中,存取一個學生信息的數據單位是
A)文件
B)數據庫
C)字段
D)記錄
(9)數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數據庫設計的
A)需求分析階段
B)邏輯設計階段
C)概念設計階段
D)物理設計階段
(10)有兩個關系R和T如下:
則由關系R得到關系T的操作是
A)選擇
B)投影
C)交
D)并
(11)下列關于函數的描述中,錯誤的是
A)函數可以沒有返回值
B)函數可以沒有參數
C)函數可以是一個類的成員
D)函數不能被定義為模板
(12)若MyClass是一個類名,且有如下語句序列
MyClass c1,*c2;
MyClass *c3=new MyClass;
MyClass &c4=c1;
上面的語句序列所定義的類對象的個數是
A)1
B)2
C)3
D)4
(13)下列關于繼承方式的描述中,錯誤的是
A)如果不顯式地指定繼承方式,缺省的繼承方式是私有(private)
B)采用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員
C)采用保護繼承方式時,基類中的保護成員在派生類中仍然是保護成員
D)采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員
(14)將前綴運算符“--”重載為非成員函數,下列原型中,能正確用于類中說明的是
A)Decr& operator --(int);
B)Decr operator --( Decr&,int);
C)friend Decr& operator --(Decr&);
D)frlend Decr operator --(Decr&,int);
(15)若MyTemp是一個只有一個虛擬類型參數的類模板,且有如下語句序列
MyTempp2;
MyTempp3[2];
編譯系統在處理上面的語句序列時,所生成的模板MyTemp的實例的個數是
A)1
B)2
C)3
D)0
(16)在C++中,cin是個
A)類
B)對象
C)模板
D)函數
(17)在下列字符中,不允許作為C++標識符的是
A)b
B)B
C)_
D)2
(18)下列敘述中,錯誤的是
A)false是一個邏輯型常量
B)"b"是一個字符型常量
C)365是一個int常量
D)3.1415926是一個double常量
(19)若x和y是程序中的兩個整型變量,則下列if語句中正確的是
A)if(x==0) y=1; else y=2;
B)if(x==0) then y=1 else y=2;
C)if(x==0) y=1 else y=2;
D)if x==0 y=1; else y=2;
(20)要定義整型數組x,使之包括初值為O的三個元素,下列語句中錯誤的是
A)int x[3]={0,0,0};
B)int x[]={0};
C)static int x[3]={0};
D)int x[]={0,0,0};
(21)關于函數中的<返回類型>,下列表述中錯誤的是
A)<返回類型>中有可能包含關鍵字int
B)<返回類型>中有可能包含自定義標識符
C)<返回類型>中有可能包含字符*
D)<返回類型>中可能包含[]
(22)要定義一個引用變量p,使之引用類MyClass的一個對象,正確的定義語句是
A)MyClass p=MyClass;
B)MyClass p=new MyClass;
C)MyClass &p=new MyClass;
D) MyClass a,&p=a;
(23)有如下兩個類定義
class XX{
private:
double x1;
protected:
double x2;
public:
double x3;
};
class YY:protected XX{
private:
double y1;
protected:
double y2;
public:
double y3;
};
在類YY中保護成員變量的個數是
A)1
B)2
C)3
D)4
(24)下列關于運算符重載的描述中,錯誤的是
A)可以通過運算符重載在C++中創建新的運算符
B)賦值運算符只能重載為成員函數
C)運算符函數重載為類的成員函數時,第一操作數是該類對象
D)重載類型轉換運算符時不需要聲明返回類型
(25)下列關于類模板的描述中,錯誤的是
A)類模板的成員函數都是模板函數
B)可以為類模板參數設置默認值
C)類模板描述了一組類
D)類模板中只允許有一個類型參數
(26)下列控制格式輸入輸出的操作符中,能夠設置浮點數精度的是
A)setprecision
B)setw
C)setfill
D)showpoint
(27)下列程序段中包含4個函數,其中具有隱含this指針的是
int fun1();
class Test{
public:
int fun2();
friend int fun3();
static int fun4();
};
A)fun1
B)fun2
C)fun3
D)fun4
(28)有如下程序
#include
using namespace std;
class Test{
public:
Test(){ }
Test(const Test &t) {cout<<1;}
};
Test fun(Test &u) {Test t=u; return t;}
int main(){Test x,y; x=fun(y); return 0;}
運行這個程序的輸出結果是
A)無輸出
B)1
C)11
D)111
(29)有如下程序
#include
using namespace std;
class A{
public:
A(int i=0):r1(i) { }
void print() {cout<<'E’<
void print() const {cout<<'C'<
void print(int x) {cout <<'P'<
private:
int r1;
};
int main() {
A a1;
const A a2(4);
a1.print(2);
a1.print();
return 0;
}
運行時的輸出結果是
A)P8-E4
B)P8-C16-
C)P0-E4-
D)P0-C16-
(30)下列代碼聲明了3個類
class Person{};
class Student:public Person{};
class Undergraduate:Student{};
下列關于這些類之間關系的描述中,錯誤的是
A)類Person是類Undergraduate的基類
B)類Undergraduate從類Student公有繼承
C)類Student是類Person的派生類
D)類Undergraduate是類Person的派生類
(31)有如下程序
#include
using namespace std;
Class Base{
public:
Base(int x=0):valB(x) {cout<
~Base() {cout<
private:
int valB;
};
class Derived:public Base{
public:
Derived(int x=0,int y=0):Base(x),valD(y){cout<
~Derived() {cout<
private:
int valD;
};
int main(){
Derived obj12(2,3);
retuen 0;
}
運行時的輸出結果是
A)2332
B)2323
C)3232
D)3223
(32)下面是類Shape的定義:
class Shape{
public:
virtual void Draw()=0;
};
下列關于Shape類的描述中,正確的是
A)類Shape是虛基類
B)類Shape是抽象類
C)類Shape中的Draw函數聲明有誤
D)語句“Shape s;”能夠建立Shape的一個對象s
(33)將運算符“+”重載為非成員函數,下列原型聲明中,錯誤的是
A)MyClock operator + (MyClock,long);
B)MyClock operator + (MyClock,MyClock);
C)MyClock operator + (long,long);
D)MyClock operator + (long,MyClock);
(34)打開文件時可單獨或組合使用下列文件打開模式
、賗os_base::app ②ios_base::binary
③ios_base::in ④ios_base::out
若要以二進制讀方式打開一個文件,需使用的文件打開模式為
A)①③
B)①④
C)②③
D)②④
(35)有如下程序:
#include
using namespace std;
Class B{
public:
B(int xx):x(xx) {++cout; x+=10;}
virtual void show() const
{cout<
protected:
static int count;
private:
int x;
};
class D:public B{
public:
D(int xx,int yy):B(xx),y(yy) {++count; y+=100;}
virtual void show() const
{cout<
private:
int y;
};
int B::count=0;
int main(){
B *ptr=new D(10,20);
ptr->show();
delete ptr;
return 0;
}
運行時的輸出結果是
A)1_120
B)2_120
C)1_20
D)2_20
二、填空題(每空2分,共30分)
請將每一個空的正確答案寫在答題卡【l】~【15】序號的橫線上,答在試卷上不得分。
(1)一個隊列的初始狀態為空,F將元素A,B,C,D,E,F,5,4,3,2,1依次入隊,然后再依次退隊,則元素退隊的順序為 【1】 。
(2)設某循環隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環隊列中共有 【2】 個元素。
(3)設二叉樹如下:
對該二叉樹進行后序遍歷的結果為 【3】 。
(4)軟件是 【4】 、數據和文檔的集合。
(5)有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學號和課號,則關系模式選課可定義為:選課(學號, 【5】 ,成績)。
(6)若x和y是兩個整形變量,在執行了語句序列
x=5; y=6; y+=x--;
后,x+y的值為 【6】 。
(7)在執行語句序列
int i=0; do i++; while(i*i<10);
時,do后面的循環體語句i++被執行的次數為 【7】 。
(8)有如下的函數定義:
int Xfun(int *a, int n){
int x=*a;
for(int *pa=a+1; pa
if(*pa>x) x=*pa;
return x;
}
若執行了語句
int x[5]={23,46,78,55,16};
后,通過表達式Xfun(x,5)調用該函數,則得到的返回值為 【8】 。
(9)有如下的函數定義:
int Xfun(int x){
int y=x;
{int x=10; y+=x;}
return x+y;
}
通過表達式Xfun(5)調用該函數,則得到的返回值為 【9】 。
(10)假定Xcs是一個類,該類中一個成員函數的原型為“Xcs *abc();”,則在類外定義時對應的函數頭為 【10】 。
(11)請將下面的類Date的定義補充完整,使得由語句
Date FirstDay;
定義的對象FirstDay的值為2010年1月1日。
class Date{
public:
Date( 【11】 ):year(y),month(m),day(d){ }
private:
int year,month,day; //依次表示年、月、日
};
(12)請將下面的程序補充完整,使得程序輸出“飄是張娜的書”。
#include
using namespace std;
class Book{
public:
Book(char *str) {strcpy(title,str);}
【12】 void PrintInfo() {cout<
protected:
char title[50];
};
class MyBook:public Book{
public:
MyBook(char *s1,char *s2="張娜"):
【13】 {strcpy(owner,s2);}
virtual void PrintInfo() {cout<
private:
char owner[10];
};
int main(){
Book *prt=new MyBook("飄");
prt->PrintInfo();
return 0;
}
(13)在有理數類Rational中重載插入運算符<<,以便按a/q形式輸出。請將<<運算符函數的定義補充完整。
class Rational{
public:
Rational(int aa, int qq):a(aa),q(qq){ }
friend 【14】 operator<<(ostream &out, Rational &x)
{
return (out<
}
private:
int a,q;
};
(14)下面的函數定義是某函數模板能夠生成的函數實例
int square(int n) {return n*n;}
double square(double n) {return n*n;}
由此可知,該函數模板的定義是 【15】 。
【9月計算機二級考試C++筆試真題】相關文章:
全國計算機等級考試二級C++筆試真題10-11
9月計算機二級考試VB真題10-11
3月全國計算機等級考試二級C++筆試真題10-11
全國計算機二級考試C++真題09-20
計算機等級考試二級ACCESS筆試真題10-06
3月計算機二級考試《VFP》真題09-30
計算機等級考試二級C++筆試選擇題06-27