- 相關(guān)推薦
全國計算機(jī)二級考試《C++》筆試樣卷
計算機(jī)二級考試考核計算機(jī)基礎(chǔ)知識和使用一種高級計算機(jī)語言編寫程序以及上機(jī)調(diào)試的基本技能。本文是百分網(wǎng)小編搜索整理的一份全國計算機(jī)二級考試《C++》筆試樣卷,供參考練習(xí)。
全國計算機(jī)二級考試《C++》筆試樣卷
一、選擇題((1)~(35)每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列選項中不符合良好程序設(shè)計風(fēng)格的是
A)源程序要文檔化 B)數(shù)據(jù)說明的次序要規(guī)范化
C)避免濫用goto語句 D)模塊設(shè)計要保證高耦合、高內(nèi)聚
(2)從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是
A)概要設(shè)計與詳細(xì)設(shè)計 B)數(shù)據(jù)設(shè)計與接口設(shè)計
C)軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計 D)過程設(shè)計與數(shù)據(jù)設(shè)計
(3)下列選項中不屬于軟件生命周期開發(fā)階段任務(wù)的是
A)軟件測試 B)概要設(shè)計 C)軟件維護(hù) D)詳細(xì)設(shè)計
(4)在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為
A)概念模式 B)外模式 C)內(nèi)模式 D)物理模式
(5)數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和
A)編碼設(shè)計 B)測試階段 C)運(yùn)行階段 D)物理設(shè)計
(6)設(shè)有如下三個關(guān)系表
A)T=R∩S B)T=R∪S 下列操作中正確的是
C)T=R×S D)T=R/S
(7)下列敘述中正確的是
A)一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定大
B)一個算法的空間復(fù)雜度大,則其時間復(fù)雜度必定小
C)一個算法的時間復(fù)雜度大,則其空間復(fù)雜度必定小
D)上述三種說法都不對
(8)在長度為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為
A)63 B)64 C)6 D)7
(9)數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的
A)存儲問題 B)共享問題 C)安全問題 D)保護(hù)問題
(10)對下列二叉樹
進(jìn)行中序遍歷的結(jié)果是
A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG
(11)下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是
A)內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移
B)內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義
C)內(nèi)聯(lián)函數(shù)是通過編譯器來實(shí)現(xiàn)的
D)內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句
(12)下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是
A)用一個對象去初始化同一類的另一個新對象時
B)將類的一個對象賦值給該類的另一個對象時
C)函數(shù)的形參是類的對象,調(diào)用函數(shù)進(jìn)行形參和實(shí)參結(jié)合時
D)函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時
(13)下列有關(guān)繼承和派生的敘述中,正確的是
A)如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護(hù)成員
B)派生類的成員函數(shù)可以訪問基類的所有成員
C)基類對象可以賦值給派生類對象
D)如果派生類沒有實(shí)現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類
(14)下列運(yùn)算符不能重載為友元函數(shù)的是
A)= () [ ] -> B)+ - ++ --
C)> < >= <= D)+= -= *= /=
(15)關(guān)于在調(diào)用模板函數(shù)時模板實(shí)參的使用,下列表述正確的是
A)對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果能從模板函數(shù)的實(shí)參中獲得相同的信息,則都可以省略
B)對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略
C)對于虛擬類型參數(shù)所對應(yīng)的模板實(shí)參,若能夠省略則必須省略
D)對于常規(guī)參數(shù)所對應(yīng)的模板實(shí)參,任何情況下都不能省略
(16)下列關(guān)于輸入流類成員函數(shù)getline()的描述中,錯誤的是
A)該函數(shù)是用來讀取鍵盤輸入的字符串的
B)該函數(shù)讀取的字符串長度是受限制的
C)該函數(shù)讀取字符串時,遇到終止符便停止
D)該函數(shù)讀取字符串時,可以包含空格
(17)下列符號中,正確的C++標(biāo)識符是
A)enum B)2b C)foo-9 D)_32
(18)下列語句中,錯誤的是
A)const int buffer=256; B)const double *point;
C)int const buffer=256; D)double * const point;
(19)if語句的語法格式可描述為:
格式1:if(<條件>) <語句>
或
格式2:if(<條件>) <語句1> else <語句2>
關(guān)于上面的語法格式,下列表述中錯誤的是
A)<條件>部分可以是一個if語句,例如if(if(a==0) …) …
B)<語句>部分可以是一個if語句,例如if(…) if(…) …
C)如果在<條件>前加上邏輯非運(yùn)算符!并交換 <語句1> 和 <語句2> 的位置,語句功能不變
D)<語句>部分可以是一個循環(huán)語句,例如if(…) while(…) …
(20)有如下說明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數(shù)值為9的表達(dá)式是
A)*p+9 B)*(p+8) C)*p+=9 D)p+8
(21)若有下面的函數(shù)調(diào)用:
fun(a+b, 3, max(n-1, b))
則fun的實(shí)參個數(shù)是
A)3 B)4 C)5 D)6
(22)以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是
A)public B)static C)protected D)private
(23)在公有繼承的情況下,允許派生類直接訪問的基類成員包括
A)公有成員 B)公有成員和保護(hù)成員
C)公有成員、保護(hù)成員和私有成員 D)保護(hù)成員
(24)關(guān)于運(yùn)算符重載,下列表述中正確的是
A)C++已有的任何運(yùn)算符都可以重載
B)運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C)在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D)可以通過運(yùn)算符重載來創(chuàng)建C++中原來沒有的運(yùn)算符
(25)關(guān)于關(guān)鍵字class和typename,下列表述中正確的是
A)程序中的typename都可以替換為class
B)程序中的class都可以替換為typename
C)在模板形參表中只能用typename來聲明參數(shù)的類型
D)在模板形參表中只能用class或typename來聲明參數(shù)的類型
(26)有如下程序
#include
#include
using namespace std;
int main( ){
cout< cout<<12.345<<___________<<34.567;
return 0;
}
若程序的輸出是:
**12.345**34.567
則程序中下劃線處遺漏的操作符是
A)setprecision(3) B)fixed C)setfill(*) D)setw(8)
(27)有如下程序
#include
#include
using namespace std;
class MyClass{
public:
MyClass( ){ cout< MyClass(char c){ cout< ~MyClass( ){ cout< }; int main( ){ MyClass p1,*p2; p2=new MyClass(X); p2 ; return 0; } 執(zhí)行這個程序屏幕上將顯示輸出 A)ABX B)ABXB C)AXB D)AXBB (28)有如下程序 #include using namespace std; int i=1; class Fun{ public: static int i; int value( ){ return i-1;} int value( )const{ return i+1;} }; int Fun::i=2; int main( ){ int i=3; Fun fun1; const Fun fun2; ____________ return 0; } 若程序的輸出結(jié)果是: 123 則程序中下劃線處遺漏的語句是 A)cout< B)cout< C)cout< D)cout< (29)有如下程序: #include using namespace std; class Obj{ static int i; public: Obj( ){ i++; } ~Obj( ){ i--; } static int getVal( ){ return i;} }; int Obj::i=0; void f(){Obj ob2; cout Obj ob1; f( ); Obj *ob3=new Obj; cout ob3; cout< return 0; } 程序的輸出結(jié)果是 A)232 B)231 C)222 D)221 (30)有如下程序 #include using namespace std; class Base { protected: Base( ){ cout< Base(char c){ cout<}; class Derived: public Base{ public: Derived( char c ){ cout<}; int main( ){ Derived d1(B); return 0; } 執(zhí)行這個程序屏幕上將顯示輸出 A)B B)BA C)AB D)BB (31)有如下類定義: class MyBase{ int k; public: MyBase(int n=0):k(n){ } int value( )const{ return k;} }; class MyDerived: MyBase{ int j; public: MyDerived(int i): j(i) {} int getK( )const{ return k; } int getJ( )const{ return j; } }; 編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最準(zhǔn)確的描述是 A)函數(shù)getK試圖訪問基類的私有成員變量k B) 在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或private C)類MyDerived 缺少一個無參的構(gòu)造函數(shù) D)類MyDerived的構(gòu)造函數(shù)沒有對基類數(shù)據(jù)成員k進(jìn)行初始化 (32)在一個派生類對象結(jié)束其生命周期時 A)先調(diào)用派生類的析構(gòu)函數(shù)后調(diào)用基類的析構(gòu)函數(shù) B)先調(diào)用基類的析構(gòu)函數(shù)后調(diào)用派生類的析構(gòu)函數(shù) C)如果基類沒有定義析構(gòu)函數(shù),則只調(diào)用派生類的析構(gòu)函數(shù) D)如果派生類沒有定義析構(gòu)函數(shù),則只調(diào)用基類的析構(gòu)函數(shù) (33)有如下的運(yùn)算符重載函數(shù)定義: double operator +(int i, int k){ return double(i+k); } 但定義有錯誤,對這個錯誤最準(zhǔn)確的描述是 A)+ 只能作為成員函數(shù)重載,而這里的 + 是作為非成員函數(shù)重載的 B)兩個int型參數(shù)的和也應(yīng)該是int型,而這里將 + 的返回類型聲明為double C)沒有將運(yùn)算符重載函數(shù)聲明為某個類的友元 D)C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運(yùn)算符 +,不能再定義同樣的運(yùn)算符 (34)語句ofstream f("SALARY.DAT", ios_base::app); 的功能是建立流對象f,并試圖打開文件SALARY.DAT與f關(guān)聯(lián),而且 A)若文件存在,將其置為空文件;若文件不存在,打開失敗 B)若文件存在,將文件指針定位于文件尾;若文件不存在,建立一個新文件 C)若文件存在,將文件指針定位于文件首;若文件不存在,打開失敗 D)若文件存在,打開失敗;若文件不存在,建立一個新文件 (35)有如下程序 #include using namespace std; class A{ public: virtual void func1( ){ cout<<"A1"; } void func2( ){ cout<<"A2"; } }; class B:public A{ public: void func1( ){ cout<<"B1"; } void func2( ){ cout<<"B2"; } }; int main( ){ A *p=new B; p->func1( ); p->func2( ); return 0; } 運(yùn)行此程序,屏幕上將顯示輸出 A) B1B2 B) A1A2 C) B1A2 D) A1B2 二、填空題(每空2分,共30分) 請將每一個空的正確答案寫在答題卡【1】~【15】序號的橫線上,答在試卷上不得分。 (1)下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為 【1】 。 (2) 【2】 的任務(wù)是診斷和改正程序中的錯誤。 (3)一個關(guān)系表的行稱為 【3】 。 (4)按“先進(jìn)后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是 【4】 。 (5)數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊列屬于 【5】 。 (6)若有定義語句:int* a, b;,則變量b的數(shù)據(jù)類型是 【6】 。 (7)已知數(shù)組a中的元素個數(shù)為n,下列語句的作用是將下標(biāo)為i的元素移動到下標(biāo)為 i-1的單元,其中1≤i for (int i=0; i a[i] = a[ 【7】 ]; (8)已知遞歸函數(shù)f的定義如下: int f(int n) {if (n <= 1) return 1; //遞歸結(jié)束情況 else return n * f(n-2); //遞歸} 則函數(shù)調(diào)用語句f(5)的返回值是 【8】 。 (9)創(chuàng)建對象數(shù)組時,對數(shù)組的每一個元素都將調(diào)用一次構(gòu)造函數(shù),如果沒有顯式給出數(shù)組元素的初值,則調(diào)用缺省構(gòu)造函數(shù)。下列程序涉及到對象數(shù)組的創(chuàng)建和單個對象的創(chuàng)建,其輸出結(jié)果是 【9】 。 #include using namespace std; class Foo { public: Foo(int x) { cout << A; } Foo() {} }; int main() { Foo f[3], g(3); return 0; } (10)已知下列程序的輸出結(jié)果是42,請將畫線處缺失的部分補(bǔ)充完整。 #include using namespace std; class Foo { int value; public: Foo( ) : value(0) {} void setValue(int value) { 【10】 = value; //給Foo的數(shù)據(jù)成員value賦值} void print( ) { cout << value; } }; int main( ) { Foo f; f.setValue(42); f.print(); return 0; } (11)如果不使用多態(tài)機(jī)制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。下列程序沒有使用多態(tài)機(jī)制,其輸出結(jié)果是 【11】 。 #include using namespace std; class Base { public: void print ( ) { cout << B; }}; class Derived : public Base { public: void print ( ) { cout << D; }}; int main( ) { Derived* pd = new Derived( ); Base* pb = pd; pb->print( ); pd->print( ); pd; return 0; } (12)在聲明派生類時,如果不顯式地給出繼承方式,缺省的類繼承方式是私有繼承private。已知有如下類定義: class Base { protected: void fun( ) {} }; class Derived : Base { }; 則Base類中的成員函數(shù)fun(),在Derived類中的訪問權(quán)限是 【12】 (注意:要求填寫private、protected或public中的一項)。 (13)在MyClass類的定義中,對賦值運(yùn)算符=進(jìn)行重載。請將畫線處缺失的部分補(bǔ)充完整。 【13】 MyClass::operator=(const MyClass& rhs) { if (this == &rhs) return *this; value = rhs.value; return *this; } (14)插入排序算法的主要思想是:每次從未排序序列中取出一個數(shù)據(jù),插入到已排序序列中的正確位置。InsertSort類的成員函數(shù)sort()實(shí)現(xiàn)了插入排序算法。請將畫線處缺失的部分補(bǔ)充完整。 class InsertSort{ public: InsertSort(int* a0, int n0) :a(a0), n(n0) {} //參數(shù)a0是某數(shù)組首地址,n是數(shù)組元素個數(shù) void sort( ) {//此函數(shù)假設(shè)已排序序列初始化狀態(tài)只包含a[0],未排序序列初始為a[1]...a[n-1] for (int i=1; i int t=a[i]; int j; for ( 【14】 ; j>0; --j){ if (t>=a[j-1]) break; a[j]=a[j-1];} a[j]=t;}} protected: int *a, n; //指針a用于存放數(shù)組首地址,n用于存放數(shù)組元素個數(shù) }; (15)下列程序的輸出結(jié)果是 【15】 。 #include using namespace std; class A { int a; public: A():a(9){} virtual void print() const { cout< }; class B : public A { char b; public: B( ){b=S;} void print( ) const { cout < }; void show(A &x){ x.print();} int main() { A d1,*p; B d2; p=&d2; d1.print(); d2.print(); p->print(); show(d1); show(d2); return 0;} 全國計算機(jī)二級考試《C++》 程序設(shè)計考試大綱 基本要求 1.掌握 C++語言的基本語法規(guī)則。 2.熟練掌握有關(guān)類與對象的相關(guān)知識。 3.能夠閱讀和分析 C++程序。 4.能夠采用面向?qū)ο蟮木幊趟悸泛头椒ň帉憫?yīng)用程序。 5.能熟練使用 Visual C++6. 0集成開發(fā)環(huán)境編寫和調(diào)試程序。 考試內(nèi)容 一、 C++語言概述 1.了解 C++語言的基本符號。 2.了解 C++語言的詞匯(關(guān)鍵字、標(biāo)識符、常量、運(yùn)算符、標(biāo)點(diǎn)符號等)。 3.掌握 C++程序的基本框架。 4.能夠使用 Visual C++ 6. 0集成開發(fā)環(huán)境編輯、編譯、運(yùn)行與調(diào)試程序。 二、數(shù)據(jù)類型、表達(dá)式和基本運(yùn)算 1.掌握 C++數(shù)據(jù)類型(基本類型,指針類型)及其定義方法。 2.了解 C++的常量定義(整型常量,字符常量,邏輯常量,實(shí)型常量,地址常量,符號常量)。 3.掌握變量的定義與使用方法(變量的定義及初始化,全局變量,局部變量)。 4.掌握 C++運(yùn)算符的種類、運(yùn)算優(yōu)先級和結(jié)合性。 5.熟練掌握 C++表達(dá)式類型及求值規(guī)則(賦值運(yùn)算,算術(shù)運(yùn)算符和算術(shù)表達(dá)式,關(guān)系運(yùn)算符和關(guān)系表達(dá)式 ,邏輯運(yùn)算符和邏輯表達(dá)式,條件運(yùn)算,指針運(yùn)算,逗號表達(dá)式)。 三、 C++的基本語句 1.掌握 C++的基本語句,例如賦值語句、表達(dá)式語句、復(fù)合語句、輸入、輸出語句和空語句等。 2.用 if語句實(shí)現(xiàn)分支結(jié)構(gòu)。 3.用 switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。 4.用 for語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。 5.用 while語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。 6.用 do. . . while語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。 7.轉(zhuǎn)向語句(goto, continue, break和 return)。 8.掌握分支語句和循環(huán)語句的各種嵌套使用。 四、數(shù)組、指針與引用 1.掌握一維數(shù)組的定義、初始化和訪問,了解多維數(shù)組的定義、初始化和訪問。 2.了解字符串與字符數(shù)組。 3.熟練掌握常用字符串函數(shù)(strlen,strcpy,strcat,strcmp,strstr等)。 4.指針與指針變量的概念,指針與地址運(yùn)算符,指針與數(shù)組。 5.引用的基本概念,引用的定義與使用。 五、掌握函數(shù)的有關(guān)使用 1.函數(shù)的定義方法和調(diào)用方法。 2.函數(shù)的類型和返回值。 3.形式參數(shù)與實(shí)際參數(shù),參數(shù)值的傳遞。 4.變量的作用域和生存周期。 5.遞歸函數(shù)。 6.函數(shù)重載。 7.內(nèi)聯(lián)函數(shù)。 8.帶有默認(rèn)參數(shù)值的函數(shù)。 六、熟練掌握類與對象的相關(guān)知識 1.類的定義方式、數(shù)據(jù)成員、成員函數(shù)及訪問權(quán)限(public, private, protected)。 2.對象和對象指針的定義與使用。 3.構(gòu)造函數(shù)與析構(gòu)函數(shù)。 4.靜態(tài)數(shù)據(jù)成員與靜態(tài)成員函數(shù)的定義與使用方式。 5.常數(shù)據(jù)成員與常成員函數(shù)。 6. this指針的使用。 7.友元函數(shù)和友元類。 8.對象數(shù)組與成員對象。 七、掌握類的繼承與派生知識 1.派生類的定義和訪問權(quán)限。 2.繼承基類的數(shù)據(jù)成員與成員函數(shù)。 3.基類指針與派生類指針的使用。 4.虛基類。 5.子類型關(guān)系。 八、了解多態(tài)性概念 1.虛函數(shù)機(jī)制的要點(diǎn)。 2.純虛函數(shù)與抽象基類,虛函數(shù)。 3.了解運(yùn)算符重載。 九、模板 1.簡單了解函數(shù)模板的定義和使用方式。 2.簡單了解類模板的定義和使用方式。 十、輸入輸出流 1.掌握 C++流的概念。 2.能夠使用格式控制數(shù)據(jù)的輸入輸出。 3.掌握文件的 I/ O操作。 考試方式 上機(jī)考試,考試時長 120分鐘,滿分 100分。 1.題型及分值 單項選擇題 40分(含公共基礎(chǔ)知識部分 10分)、操作題 60分(包括基本操作題 、簡單應(yīng)用題及綜合應(yīng)用題)。 2.考試環(huán)境 Visual C++ 6. 0。 【全國計算機(jī)二級考試《C++》筆試樣卷】相關(guān)文章: 2015年9月全國計算機(jī)等級考試二級C++預(yù)測卷06-04 全國計算機(jī)二級考試C++真題03-09 2015下半年全國計算機(jī)考試二級C++預(yù)測卷03-05 2015年9月全國計算機(jī)等級考試二級C++預(yù)測卷答案及解析03-30 2015下半年全國計算機(jī)二級C++考試預(yù)測卷(附答案)05-16 全國計算機(jī)二級考試C++強(qiáng)化試題及答案05-05