違法信息舉報 客服熱線:400-118-7898
廣告
?
專接本欄目測試廣告

?自考C++程序設(shè)計2012年1月試題

自考 責任編輯:彭雅倩 2019-06-24

摘要:自考C++程序設(shè)計2012年1月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。

自考C++程序設(shè)計2012年1月試題及答案解析

自考C++程序設(shè)計2012年1月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。

一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。

1.如聲明對象數(shù)組,則下列描述正確的是(  )

A.對每個元素均調(diào)用一次構(gòu)造函數(shù)
B.部分元素調(diào)用構(gòu)造函數(shù),其它元素不需調(diào)用
C.均不需要調(diào)用構(gòu)造函數(shù)
D.只是首元素調(diào)用構(gòu)造函數(shù)

2.不同對象調(diào)用同一成員函數(shù)時,this指針指向(  )

A.不同對象
B.相同對象
C.無對象
D.不確定

3.設(shè)存在函數(shù)int max(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達式正確的是(  )

A.int m=max(22,max(59,70));
B.int m=max(max(22,59),max(59,70));
C.int m=max(max(22,70),59);
D.以上皆正確

4.一個類可擁有多少個構(gòu)造函數(shù)(  )

A.0個
B.1個
C.1或多個
D.以上皆對

5.在編譯指令中,嵌入指令是指(  )

A.#include
B.#define
C.#if
D.#else

6.設(shè)存在數(shù)組a,其長度為Len,下列哪項操作是將a中元素復(fù)制到數(shù)組b中(  )

A.reverse(a+a,Len,b);
B.sort(a,a+Len,b);
C.find(a,a+Len,b);
D.copy(a,a+Len,b);

7.下列哪個要素不是面向?qū)ο蟮年P(guān)鍵要素(  )

A.模塊化
B.抽象性
C.封裝性
D.繼承性

8.下列對于類的描述錯誤的是(  )

A.類要先聲明后使用
B.類是具有唯一標識的實體
C.兩個類可以使用同一個名稱
D.組成類的不僅有數(shù)據(jù),還可以有對數(shù)據(jù)進行操作的函數(shù)

9.使用引用調(diào)用方式將實參傳給形參,下列說法正確的是(  )

A.形參是實參的備份
B.實參是形參的備份
C.形參和實參共享同一對象
D.形參和實參無聯(lián)系

10.關(guān)于對象的性質(zhì),下列描述錯誤的是(  )

A.同一類對象之間可相互賦值
B.不能使用對象數(shù)組
C.對象可以用作函數(shù)參數(shù)
D.一個對象可以用作另一個類的成員

11.類的私有成員可在哪里被賦值(  )

A.類體中
B.該類的成員函數(shù)中
C.A和B
D.以上都不是

12.設(shè)存在數(shù)組a,其長度為Len,則下列哪個泛型算法用于反轉(zhuǎn)a中各元素(  )

A.reverse(a,a+Len);
B.sort(a,a+Len);
C.find(a,a+Len,value);
D.copy(a,a+Len,b);

13.用于標識八進制常量的前綴或后綴是(  )

A.無
B.后綴L或l
C.前綴零
D.前綴0x

14.派生類中繼承的基類成員初始化如何進行(  )

A.由派生類構(gòu)造函數(shù)調(diào)用基類的構(gòu)造函數(shù)進行
B.由派生類構(gòu)造函數(shù)進行
C.由基類構(gòu)造函數(shù)進行,無需派生類構(gòu)造函數(shù)調(diào)用
D.以上皆不正確

15.對于多重繼承,下列描述正確的是(  )

A.所有基類使用相同的派生方式
B.每個基類可使用不同派生方式
C.只能是public派生
D.只能是protected派生

16.下列關(guān)于類的權(quán)限描述錯誤的是(  )

A.類本身的成員函數(shù)可以訪問自身的任何成員
B.類的對象可以訪問該類的所有成員
C.普通函數(shù)不能直接訪問類的公有成員,必須通過成員函數(shù)對其訪問
D.一個類可以將另一個類的對象作為成員

17.運算符delete與哪個函數(shù)一起運行(  )

A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.主函數(shù)
D.不與任何函數(shù)一起工作

18.一個類可以獲得另一個類的特性的機制稱為(  )

A.抽象
B.封裝
C.繼承
D.多態(tài)性

19.使用下列哪個格式控制符可設(shè)置轉(zhuǎn)換十六進制為十進制(  )

A.dec
B.oct
C.hex
D.endl

20.對引用調(diào)用描述正確的是(  )

A.分配新存儲空間
B.修改已存儲空間的名稱為引用名
C.引用名與已存在存儲空間無任何關(guān)聯(lián)
D.將引用名標識符與一塊已存在儲區(qū)域相關(guān)聯(lián),沒有分配新存儲空間

二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。

11.公共派生中,基類的公有成員在派生類中是______。

12.若要使用標準輸入流機制從鍵盤輸入一個整數(shù)賦給整型變量a,相應(yīng)的C++語句是______。

13.UML中對象行為之間的動態(tài)關(guān)系是通過對象行為之間的依賴關(guān)系表現(xiàn)的,稱之為______。

14.C++函數(shù)中按引用調(diào)用傳遞參數(shù)時使用______作為參數(shù)。

15.在C++中除具有______語句和switch語句的函數(shù)外,其它函數(shù)都可以說明為內(nèi)聯(lián)函數(shù)。

16.C++中規(guī)定模板以______關(guān)鍵字和一個形參表示開頭。

17.構(gòu)造函數(shù)不能被繼承,一個派生類只能調(diào)用它的______基類的構(gòu)造函數(shù)。

18.vector類中用于獲取存放的元素個數(shù)的方法是______。

19.C++中istream類的直接基類是______。

110.要關(guān)閉一個文件輸出流對象myFile,所用的C++語句是______。

111.執(zhí)行下列代碼   double pi= 3.141592   cout﹤﹤setprecision(2)﹤﹤pi; 程序的輸出結(jié)果是______。

112.在私有派生中,基類的權(quán)限為private的成員,在派生類中______。

113.C++總共有3種文件流,分別是輸入文件流、輸出文件流和______。

114.C++使用流進行輸入輸出,其中能捕獲鍵盤輸入的對象是______。

115.在vector類中刪除向量中最后一個對象的方法是______。

116.函數(shù)重載可使一個函數(shù)名具有多種功能,稱這種特性為______。

117.C++語言對C語言做了很多改進,C++語言相對于C語言的最根本的變化是引進了______概念。

118.______指令定義一個標識符及串,在源程序中每次遇到該標識符時,編譯器均用定義的串代替之。

119.在C++標準輸出方式中,要設(shè)置輸出數(shù)據(jù)字段寬度width所使用的操控符是______。

120.設(shè)有定義int x; float y;,則10+x+y值的數(shù)據(jù)類型是______。

三、改錯題(本大題共5小題,每小題2分,共10分)

21.#include ﹤iostream.h﹥   main( ){   int x=9,y=8,z=7;   const int * p=z;   cout﹤﹤ * p﹤﹤endl;   }

22.#include ﹤iostream.h﹥   main( ){   int x=8,y=6;   const int*const p=&x;   p=&y;   cout﹤﹤* p﹤﹤endl;   }

23.#include ﹤iostream.h﹥   main( ){   folat p;   p=new folat[5];   for(int i=0;i﹤5;i++)   {cin﹥﹥ * (p+i);cout﹤﹤ * (p+i)﹤﹤endl;}   delete p;   }

24.template﹤class T﹥   T f(T x){   T y;  y=x+T;   return y;   }

25.#include ﹤iostream.h﹥   class point{   int x;   public: void init(int a){x=a;}   int getx( ){return x;}   void setx(int a){x=a;}   };   main( ){   point a;   a.init(20,30);   cout﹤﹤a.getx( )﹤﹤endl;   }

四、完成程序題(本大題共5小題,每小題4分,共20分)

31.在下面程序的下劃線處填上正確的語句,使其得到下面的輸出結(jié)果。   x=2,y=3   #include ﹤iostream.h﹥   class Sample   {   int x,y;   public:   Sample( ){   x=y=0;   }   Sample(int a,int b){   x=a;   (__________)   }   void disp( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;   }   }(____­_______)   void main( )   {   Sample s(2,3), *p=&s;   p-﹥disp( );   }

32.在下劃線處填上適當?shù)恼Z句,使程序的輸出結(jié)果如下:   n=30   #include ﹤ iostream.h ﹥   template﹤ class T ﹥   class Sample   {   T n;   public:   Sample( ){ }   Sample(T i){_________}   Sample﹤T﹥&operator+(const Sample﹤T﹥&);   void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;}   };   template﹤class T﹥   Sample﹤T﹥&Sample﹤T﹥::operator+(const Sample﹤T﹥&s)   {   static Sample﹤T﹥temp;   return temp;   }   void main( )   {   Sample﹤int﹥s1(10),s2(20),s3;   s3=s1+s2;   s 3.disp( );   }

33.在下劃線處填上適當?shù)恼Z句,使程序的輸出結(jié)果如下:   1 2 3 4 5 6 7 8 9 10   #include ﹤iostream.h﹥   class Sample   {   int A[10][10];   public:   int &operator( )(int,int);   };   int &Sample::operator( )(int x,int y)   {   return A[x][y];   }   void main( )   {   Sample a;   int i, j;   _________   for(j=0;j﹤10;j++)   _________   for(i=0;i﹤10;i++)   cout﹤﹤a(i, 1)﹤﹤ " ";   cout﹤﹤endl;   }

34.在下劃線處填上適當?shù)木渥樱瓿珊瘮?shù)的定義。   #include ﹤iostream.h﹥   class Sample   {   int x;   public:   Sample( ){ };   _________{x=a;}   _________{x=a.x+++10;}   void disp( ){cout﹤﹤"x="﹤﹤x﹤﹤endl;}   };   void main( )   {   Sample s1(2),s2(s1);   s 1.disp( );   s 2.disp( );   }

35.輸入一個字符串,將其逆序后輸出。   #include ﹤iostream﹥   using namespace std;   void main( )   {   char a[50];memset(a,0,sizeof(a));   int i=0,j;   char t;   cin.getline(a,50,' ';   for(i=0, j=strlen(a)-1;i﹤_________;i++, j-- )   {   t=a[i];   a[j]=t;   }   cout﹤﹤a﹤﹤endl;   }

五、程序分析題(本大題共4小題,每小題5分,共20分)

41.給出下面程序的輸出結(jié)果   #include ﹤iostream.h﹥   class example   {   int a;   public:   example(int b){a=b++;}   void print( ){a=a+1;cout﹤﹤a﹤﹤" ";}   void print( )const{cout﹤﹤a﹤﹤"";}   };   void main( )   {   example x(3);   const example y(2);   x.print( );   y.print( );   }

42.給出下面程序的輸出結(jié)果   #include ﹤iostream.h﹥   class Sample   {   int x,y;   public:   Sample( ){x=y=0;}   Sample(int a,int b){x=a;y=b;}   ~Sample( )   {   if(x==y)   cout﹤﹤"x=y"﹤﹤endl;   else   cout﹤﹤"x!=y"﹤﹤endl;   }   void disp( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;   }   };   void main( )   {   Sample s1(2,3);   s 1.disp( );   }

43.給出下面程序的輸出結(jié)果   #include ﹤iostream.h﹥   class Sample   {   int n;   static int sum;   public:   Sample(int x){n=x;}   void add( ){sum+=n;}   void disp( )   {   cout﹤﹤"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl;   }   };   int Sample::sum=0;   void main( )   {   Sample a(2),b(3),c(5);   a.add( );   a.disp( );   b.add( );   b.disp( );   c.add( );   c.disp( );   }

44.給出下面程序的輸出結(jié)果   #include ﹤iostream.h﹥   class A{   private:   friend class B;   A(int val=0):data(val),use(1){ }   int use,data;   };   class B{   public:   A*pa;   B(int val=0):pa(new A(val)){ }   ~B( ){if( -- pa -﹥use==0)delete pa;}   B(B&rhs){ ++ rhs -﹥use;pa=rhs.pa;}   B&operator=(B&rhs);   A*operator -﹥( ){return pa;}   void Display( ){   cout﹤﹤"data="﹤﹤pa -﹥data﹤﹤",use="﹤﹤pa -﹥use﹤﹤endl;   }   };   B&B::operator=(B&rhs)   {   if(this ==&rhs)return*this;   if( -- pa -﹥use = =0)delete pa;   ++ rhs -﹥use;   pa=rhs.pa;   return * this;   }   int main( ){   B b1(1),b2(b1),b3(3);   b 1.Display( );   b 2.Display( );   b 3.Display( );   b3=b1;   b 1.Display( );   b 3.Display( );   return 0;

六、程序設(shè)計題(本大題共1小題,共10分)

51.已知一個student類,包括學(xué)姓名,成績和等級,不含任何成員函數(shù),process為學(xué)生信息處理類。   class student{   char name[10];   int deg;   char level[7];   friend class process:   public:   student(char na[ ],int d){strcpy(name,na);deg=d;}   } ;   class process{   public:   void trans(student s[ ]){…} //根據(jù)學(xué)生成績計算學(xué)生等級(優(yōu)大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分)   void disp(student s[ ]){…} //根據(jù)成績降序打印所有學(xué)生信息   };   要求實現(xiàn)process類中的兩個函數(shù):

溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準!

自考備考資料免費領(lǐng)取

去領(lǐng)取