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