?C++程序設計2010年1月真題試題(04737)
摘要:C++程序設計2010年1月真題試題及答案解析(04737),本試卷總共100分。
C++程序設計2010年1月真題試題及答案解析(04737)
C++程序設計2010年1月真題試題及答案解析(04737),本試卷總共100分。
一、單項選擇題
(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。
1.在C++中,頭文件擴展名為( )
A..cpp
B..h
C..lib
D..obj
2.下列符號中,不屬于分隔符的是( )
A.,
B./
C.;
D.{ }
3.可替換#define PI 3.1415926的語句是( )
A.float PI 3.1415926;
B.const float PI=3.1415926;
C.const PI(3.1415926);
D.const 3.1415926;
4.布爾類型標識符是( )
A.void
B.short
C.long
D.bool
5.下列不是C++語言的基本數據類型的是( )
A.字符類型
B.整數類型
C.邏輯類型
D.枚舉類型
6.C++允許在結構中定義函數,這些函數稱為( )
A.靜態函數
B.構造函數
C.析構函數
D.成員函數
7.設函數void inc(int)將形參加1,如有整型變量int i=10; 則執行inc(i); 后,i的值為( )
A.9
B.10
C.11
D.未知
8.下列哪種默認參數的聲明是不正確的( )
A.int max(int a, int b, int c, int d=0);
B.int max(int a, int b, int c=0, int d=0);
C.int max(int a=0, int b, int c=0, int d=0);
D.int max(int a, int b=0, int c=0, int d=0);
9.設int &max(int &, int &)返回兩參數中較大者,如有兩整型變量int a=10; int b=15;在執行max(a, b)++后,a,b值分別為( )
A.10,15
B.11,15
C.10,16
D.11,16
10.包含哪種語句的函數不能聲明為內聯函數( )
A.循環
B.變量自增自減
C.if…else…
D.變量聲明
11.定義函數模板中使用的參數類型標識符需使用下列哪組符號括起來( )
A.<>
B.""
C.( )
D.{ }
12.一個類擁有多個構造函數,則這些構造函數間為( )
A.重載關系
B.重復關系
C.拷貝關系
D.無關系
13.對于拷貝構造函數point:: point(point& p),下列說明正確的是( )
A.該函數只能訪問P的私有成員
B.該函數不能訪問P的公有成員
C.該函數可以訪問P的私有和公有成員
D.該函數不能訪問P的成員
14.使用delete[ ]刪除對象數組時,描述正確的是( )
A.數組中各元素都調用析構函數
B.數組中各元素都調用構造函數
C.不調用析構函數
D.只有首元素調用析構函數
15.下列哪個指令屬于條件編譯指令( )
A.#elif
B.#error
C.#pragma
D.#include
16.設類Test中存在成員static int x,則下列哪種初始化方式是正確的( )
A.Test::int x=25;
B.int x=25;
C.int Test::x=25;
D.int Test x=25;
17.下列關于友元的描述錯誤的是( )
A.成員函數不可作友元
B.類可以作友元
C.普通函數可以作友元
D.靜態函數可以作友元
18.在繼承中,派生類擁有的基類個數為( )
A.0個
B.1個
C.多個
D.至少1個
19.基類中的protected成員,通過public派生,其在派生類中的可見性為( )
A.不可訪問
B.private
C.protected
D.public
20.下列哪個不是面向對象的關鍵要素( )
A.抽象性
B.結構性
C.封裝性
D.多態性
二、填空題
(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.在STL庫中用于實現數組內容反轉的函數是__________。
12.若要使用C++標準類庫,需要指定相應的命名空間,所用的語句是__________。
13.C++語言中的整數常量有4種描述類型:十進制常量、長整型常量、八進制常量和__________。
14.聲明一個名為a的整型引用變量所使用的語句是__________。
15.重載的運算符仍保留原有的優先級、__________和語法結構。
16.執行代碼 int b=100; cout<<hex<<b:程序的輸出結果是__________。
17.帶有純虛函數的類稱為抽象類,它只能作為__________來使用。
18.使用__________作為函數參數,實參對象和形參對象代表同一對象,改變形參對象的值就是改變實參對象的值。
19.UML中對象之間的靜態關系是通過對象屬性之間的連接反映的,稱之為__________。
110.如果一個模板聲明列出多個參數,則多個參數之間必須使用逗號隔開,每個參數都必須重復使用關鍵字__________。
111.C++類的構造函數名與__________名稱一樣,且沒有返回值。
112.C++規定,當一個成員函數被調用時,系統自動向它傳遞一個隱含的參數,該參數是一個指向調用該函數的對象的指針,該指針被稱為__________指針。
113.聲明一個常成員函數Fun,其返回類型為char,第一個參數類型為int,第二個參數類型為double,函數Fun的聲明原型是__________。
114.C++語言中的“聚合”隱含了兩種實現方式,一種是__________,另一種是用一個類的對象作為一種廣義的數據類型來定義整體對象的一個屬性。
115.簡單成員函數是指聲明中不含const、__________和static關鍵字的函數。
116.在派生類中繼承的基類成員的初始化,需要由派生類的構造函數調用基類的__________來完成。
117.在C++中,利用向量類模板定義一個具有20個int的向量,其所有元素被置為1,實現此操作的語句是__________。
118.vector類中用于獲取無需再次分配內存就能容納的對象個數的方法是__________。
119.動態聯編是程序運行到需要的語句處才動態確定的,這稱為__________多態性。
120.C++重載“=”運算符的函數名是__________。
三、改錯題
(本大題共5小題,每小題4分,共20分)下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。
21. #include<iostream.h> #define PI 3.14; void main( ) { double i; int r; cout<<″輸入圓形半徑:″; cin>>r; i=2 * PI * r; cout<<″圓形周長=″<<i<<endl; i=PI * r * r; cout<<″圓形面積=″<<i<<endl; }
22. #include <iostream.h> class A { private: int x, y; public: A(int a=0, b=1); void Show( ); }; A::A(int a, int b) { x=a; y=b; } void A::Show( ) { cout<<″x=″<<x<<endl; cout<<″y=″<<y<<endl; }
23. #include <iostream.h> class A { unsigned char var; public: A(unsigned char x){ var=x: } void print( ){ cout<<″var=″<<var; } }; void main( ) { A a(″x″); a. print( ); }
24. #include < iostream.h> class Class { public: void print(int a,int b) { cout<<″int:″<< a << endl; cout <<″int:″<< b << endl; } void print(char * a,char * b) { cout<<″string:″ <<a <<endl; cout <<″ string:″ <<b <<endl; } void print(char * a,unsigned int b){ cout <<″string:″ <<a <<endl; cout <<″int:″ <<b <<endl; } }; void main( ) { Class cls; cls.print(10,20); cls.print(′c′,1); cls.print(′x′,′y′); cls.print(″Hello!″,0); }
25. #include < iostream.h > class Class { private: int val; public: void func( int a) { val = a; } }; void main( ) { Class * cls ; cls -> func(10) ; }
四、完成程序題
(本大題共5小題,每小題4分,共20分)
31.將下面程序補充完整,使程序計算100以內所有可被7整除的自然數之和。 #include <iostream.h> void main( ) { int x=1; int sum=0; while(true) { if(x>100){ __________; } if(__________){ sum=sum+x; } x++; } cout<<sum<<endl; }
32.將下面程序補充完整,使程序執行結果為9。 #include <iostream.h> class Class{ public: __________{ x=a; } __________{ return x * x; } private: int x; }; void main( ) { Class a(3); cout<<a.get( )<<endl; }
33.將下面程序補充完整,使程序正確的初始化私有變量var及釋放資源。 class Class { private: int * var; public: Class(int num); ~Class( ); }; Class::Class(int num) { ___________; } Class::~Class( ) { ___________; }
34.將下面程序補充完整,使程序的輸出結果為:ClassA::PrintClassB::Print程序如下: #include<iostream.h> class Base { public: virtual void Print( ) const { cout<<″Base::Print″<<endl; } }; class ClassA:public Base { public: void Print( )const{cout<<″ClassA::Print″<<endl;} }; class ClassB:public Base { public: void Print( )const{cout<<″ClassB::Print″<<endl;} }; void Print(__________) { __________; } void main( ) { ClassA a; ClassB b; Print(a); Print(b); }
35.下列程序的運行結果如下:x=22,y=22根據結果將程序補充完整。 #include <iostream.h> template <__________> void f(__________) { if(sizeof(T1)>sizeof(T2)) x=(T1)y; else y=(T2)x; } void main( ){ double x=134.2; int y=22; f(x,y); cout<<″x=″<<x<<″,y=″<<y; }
五、程序分析題
(本大題共2小題,每小題5分,共10分)
41.請給出下面程序的輸出結果 #include < iostream.h > class Class { public: static int var; Class( ) { var+ +; } }; int Class::var = 0; void main( ) { cout <<″Class::var =″ <<Class:: var <<endl; Class c1 ; cout < <″c1. var=″ < <c1. var < <endl; Class c2, c3 ; cout <<″c2. var =″ <<c2. var <<endl; }
42. #include < iostream.h > class A { public: A( ); void Show( ) ; ~A( ); private: static int c; }; int A::c =0; A::A( ) { cout <<″constructor.″ <<endl; c+ =10; } void A: :Show( ) { cout<<″c=″ < <c< <endl; } A::~A( ) { cout <<″destructor.″ <<endl; } void main( ) { A a, b; a.Show( ); b.Show( ); }
六、程序設計題
(本大題共1小題,共10分)
51.利用LOCATION類,使用繼承定義圓類CIRCLE,圓由圓心和半徑構成。提供得到圓心坐標和半徑的成員函數、以及計算圓的周長和面積的成員函數。在主程序中創建兩個圓A和B,圓心坐標分別為(0,3)、(3,7),按如下格式輸出兩個圓的圓心坐標、周長和面積,并計算和輸出兩個圓的圓心之間的距離。A:(x1,y1,r1),Girth=g1,Area=a1B:(x2,y2,r2),Girth=g2,Area=a2A(x1,y1),B(x2,y2),Distance=d定義LOCATION類,該類沒有“繼承”等現象。注意二維坐標點之間的距離公式。class LOCATION{double x,y;public:virtual double getx( )const{return x;};virtual double gety( )const{return y;};virtual double dist(LOCATION &s)const;LOCATION(double x, double y):x(x), y(y){ };};double LOCATION:: dist(LOCATION &s)const{double xd=s.x-x, yd=s.y-y;return sqrt(xd*xd+yd*yd);}
延伸閱讀
- 2025年4月自考政治經濟學(中級)全真模擬試題
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取