- 相關(guān)推薦
全國計算機二級考試《C++》筆試樣卷
計算機二級考試考核計算機基礎(chǔ)知識和使用一種高級計算機語言編寫程序以及上機調(diào)試的基本技能。本文是百分網(wǎng)小編搜索整理的一份全國計算機二級考試《C++》筆試樣卷,供參考練習。
全國計算機二級考試《C++》筆試樣卷
一、選擇題((1)~(35)每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)下列選項中不符合良好程序設(shè)計風格的是
A)源程序要文檔化 B)數(shù)據(jù)說明的次序要規(guī)范化
C)避免濫用goto語句 D)模塊設(shè)計要保證高耦合、高內(nèi)聚
(2)從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是
A)概要設(shè)計與詳細設(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)軟件維護 D)詳細設(shè)計
(4)在數(shù)據(jù)庫系統(tǒng)中,用戶所見的數(shù)據(jù)模式為
A)概念模式 B)外模式 C)內(nèi)模式 D)物理模式
(5)數(shù)據(jù)庫設(shè)計的四個階段是:需求分析、概念設(shè)計、邏輯設(shè)計和
A)編碼設(shè)計 B)測試階段 C)運行階段 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的有序線性表中進行順序查找,最壞情況下需要比較的次數(shù)為
A)63 B)64 C)6 D)7
(9)數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的
A)存儲問題 B)共享問題 C)安全問題 D)保護問題
(10)對下列二叉樹
進行中序遍歷的結(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ù)是通過編譯器來實現(xiàn)的
D)內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句
(12)下列情況中,不會調(diào)用拷貝構(gòu)造函數(shù)的是
A)用一個對象去初始化同一類的另一個新對象時
B)將類的一個對象賦值給該類的另一個對象時
C)函數(shù)的形參是類的對象,調(diào)用函數(shù)進行形參和實參結(jié)合時
D)函數(shù)的返回值是類的對象,函數(shù)執(zhí)行返回調(diào)用時
(13)下列有關(guān)繼承和派生的敘述中,正確的是
A)如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員
B)派生類的成員函數(shù)可以訪問基類的所有成員
C)基類對象可以賦值給派生類對象
D)如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類
(14)下列運算符不能重載為友元函數(shù)的是
A)= () [ ] -> B)+ - ++ --
C)> < >= <= D)+= -= *= /=
(15)關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述正確的是
A)對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略
B)對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略
C)對于虛擬類型參數(shù)所對應(yīng)的模板實參,若能夠省略則必須省略
D)對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略
(16)下列關(guān)于輸入流類成員函數(shù)getline()的描述中,錯誤的是
A)該函數(shù)是用來讀取鍵盤輸入的字符串的
B)該函數(shù)讀取的字符串長度是受限制的
C)該函數(shù)讀取字符串時,遇到終止符便停止
D)該函數(shù)讀取字符串時,可以包含空格
(17)下列符號中,正確的C++標識符是
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)如果在<條件>前加上邏輯非運算符!并交換 <語句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的表達式是
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ù)是
A)3 B)4 C)5 D)6
(22)以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是
A)public B)static C)protected D)private
(23)在公有繼承的情況下,允許派生類直接訪問的基類成員包括
A)公有成員 B)公有成員和保護成員
C)公有成員、保護成員和私有成員 D)保護成員
(24)關(guān)于運算符重載,下列表述中正確的是
A)C++已有的任何運算符都可以重載
B)運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C)在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D)可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符
(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)有一處語法錯誤,對這個錯誤最準確的描述是 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進行初始化 (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)有如下的運算符重載函數(shù)定義: double operator +(int i, int k){ return double(i+k); } 但定義有錯誤,對這個錯誤最準確的描述是 A)+ 只能作為成員函數(shù)重載,而這里的 + 是作為非成員函數(shù)重載的 B)兩個int型參數(shù)的和也應(yīng)該是int型,而這里將 + 的返回類型聲明為double C)沒有將運算符重載函數(shù)聲明為某個類的友元 D)C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符 +,不能再定義同樣的運算符 (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; } 運行此程序,屏幕上將顯示輸出 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)按“先進后出”原則組織數(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,下列語句的作用是將下標為i的元素移動到下標為 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,請將畫線處缺失的部分補充完整。 #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)機制,那么通過基類的指針雖然可以指向派生類對象,但是只能訪問從基類繼承的成員。下列程序沒有使用多態(tài)機制,其輸出結(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類的定義中,對賦值運算符=進行重載。請將畫線處缺失的部分補充完整。 【13】 MyClass::operator=(const MyClass& rhs) { if (this == &rhs) return *this; value = rhs.value; return *this; } (14)插入排序算法的主要思想是:每次從未排序序列中取出一個數(shù)據(jù),插入到已排序序列中的正確位置。InsertSort類的成員函數(shù)sort()實現(xiàn)了插入排序算法。請將畫線處缺失的部分補充完整。 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;} 全國計算機二級考試《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)鍵字、標識符、常量、運算符、標點符號等)。 3.掌握 C++程序的基本框架。 4.能夠使用 Visual C++ 6. 0集成開發(fā)環(huán)境編輯、編譯、運行與調(diào)試程序。 二、數(shù)據(jù)類型、表達式和基本運算 1.掌握 C++數(shù)據(jù)類型(基本類型,指針類型)及其定義方法。 2.了解 C++的常量定義(整型常量,字符常量,邏輯常量,實型常量,地址常量,符號常量)。 3.掌握變量的定義與使用方法(變量的定義及初始化,全局變量,局部變量)。 4.掌握 C++運算符的種類、運算優(yōu)先級和結(jié)合性。 5.熟練掌握 C++表達式類型及求值規(guī)則(賦值運算,算術(shù)運算符和算術(shù)表達式,關(guān)系運算符和關(guān)系表達式 ,邏輯運算符和邏輯表達式,條件運算,指針運算,逗號表達式)。 三、 C++的基本語句 1.掌握 C++的基本語句,例如賦值語句、表達式語句、復(fù)合語句、輸入、輸出語句和空語句等。 2.用 if語句實現(xiàn)分支結(jié)構(gòu)。 3.用 switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。 4.用 for語句實現(xiàn)循環(huán)結(jié)構(gòu)。 5.用 while語句實現(xiàn)循環(huán)結(jié)構(gòu)。 6.用 do. . . while語句實現(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.指針與指針變量的概念,指針與地址運算符,指針與數(shù)組。 5.引用的基本概念,引用的定義與使用。 五、掌握函數(shù)的有關(guān)使用 1.函數(shù)的定義方法和調(diào)用方法。 2.函數(shù)的類型和返回值。 3.形式參數(shù)與實際參數(shù),參數(shù)值的傳遞。 4.變量的作用域和生存周期。 5.遞歸函數(shù)。 6.函數(shù)重載。 7.內(nèi)聯(lián)函數(shù)。 8.帶有默認參數(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ù)機制的要點。 2.純虛函數(shù)與抽象基類,虛函數(shù)。 3.了解運算符重載。 九、模板 1.簡單了解函數(shù)模板的定義和使用方式。 2.簡單了解類模板的定義和使用方式。 十、輸入輸出流 1.掌握 C++流的概念。 2.能夠使用格式控制數(shù)據(jù)的輸入輸出。 3.掌握文件的 I/ O操作。 考試方式 上機考試,考試時長 120分鐘,滿分 100分。 1.題型及分值 單項選擇題 40分(含公共基礎(chǔ)知識部分 10分)、操作題 60分(包括基本操作題 、簡單應(yīng)用題及綜合應(yīng)用題)。 2.考試環(huán)境 Visual C++ 6. 0。 【全國計算機二級考試《C++》筆試樣卷】相關(guān)文章: 全國計算機二級《C++》上機試題及答案03-28 計算機等級考試二級C++筆試選擇題04-23 計算機二級C++模擬試題及答案02-06 最新全國計算機二級考試試題01-25 全國計算機二級考試哪個最簡單03-01 全國計算機二級考試《VB》操作試題及答案01-25 全國計算機二級考試《C語言》真題與答案03-02