【南開(kāi)】《程序設(shè)計(jì)基礎(chǔ)(下)》20春期末考核(標(biāo)準(zhǔn)答案)

可做奧鵬全部院校在線離線作業(yè)畢業(yè)論文QQ:3230981406 微信:aopopenfd777

發(fā)布時(shí)間:2020/9/3 11:08:23來(lái)源:admin瀏覽: 45 次

《程序設(shè)計(jì)基礎(chǔ)(下)》20春期末考核 -00001

試卷總分:100  得分:100

一、單選題 (共 20 道試題,共 40 分)

1.類模板的靜態(tài)數(shù)據(jù)成員由( )共享。

A.一個(gè)類模板的所有模板類

B.一個(gè)模板類的所有對(duì)象

C.一個(gè)模板類的一個(gè)對(duì)象

D.一個(gè)類模板的所有對(duì)象

答案:B

 

2.設(shè)線性表有n個(gè)元素,以下算法中,( )在順序表上實(shí)現(xiàn)比在鏈表上實(shí)現(xiàn)效率更高。

A.輸出第i(0≤i≤n—1)個(gè)元素值

B.交換第0個(gè)元素與第1個(gè)元素的值

C.順序輸出這n個(gè)元素的值

D.輸出與給定值x相等的元素在線性表中的序號(hào)

答案:A

 

3.在一個(gè)無(wú)向圖中,若兩頂點(diǎn)之間的路徑長(zhǎng)度為k,則該路徑上的頂點(diǎn)數(shù)為( )。

A.k

B.k+1

C.k+2

D.2k

答案:B

 

4.在一個(gè)鏈接隊(duì)列中,假設(shè)f和r 分別是隊(duì)頭和隊(duì)尾指針,則刪除一個(gè)結(jié)點(diǎn)的運(yùn)算時(shí)( )。

A.r=f->next;

B.r=r->next;

C.f=f->next;

D.f=r->next;

 

5.下列( )不是構(gòu)造函數(shù)的特征。

A.構(gòu)造函數(shù)的函數(shù)名與類名相同

B.構(gòu)造函數(shù)可以重載

C.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)

D.構(gòu)造函數(shù)必須指定類型說(shuō)明

 

6.在一個(gè)長(zhǎng)度為n的順序存儲(chǔ)的線性表中,向第i個(gè)元素(1≤i≤n+1)位置插入一個(gè)新元素時(shí),需要將( )個(gè)元素向后移動(dòng)一個(gè)位置。

A.n-i

B.n-i+1

C.n-i-1

D.i

 

7.在二叉樹(shù)的第i層上至多有( )個(gè)結(jié)點(diǎn)(i≥1)。

A.2的i次方減1

B.2的i-1次方

C.2的i次方加+1

D.2的i+1次方

 

8.對(duì)于任意一個(gè)類,析構(gòu)函數(shù)的個(gè)數(shù)最多為( )。

A.0

B.1

C.2

D.3

 

9.若讓元素1,2,3依次進(jìn)棧,則出棧次序不可能出現(xiàn)( )的情況。

A.3,2,1

B.2,1,3

C.1,3,2

D.3,1,2

 

10.類模板的模板參數(shù)( )。

A.只可作為數(shù)據(jù)成員的類型

B.只可作為成員函數(shù)的返回類型

C.只可作為成員函數(shù)的參數(shù)類型

D.以上三者皆可

 

11.在一棵完全二叉樹(shù)中,根結(jié)點(diǎn)的編號(hào)為1,按照由上到下由左到右的順序?yàn)槎鏄?shù)結(jié)點(diǎn)編號(hào)。若編號(hào)為5的結(jié)點(diǎn)存在右孩子,則右孩子結(jié)點(diǎn)的編號(hào)為( )。

A.9

B.10

C.11

D.12

 

12.在下述結(jié)論中,正確的是( )。

A.在樹(shù)中,互為堂兄弟的結(jié)點(diǎn)擁有相同的雙親

B.二叉樹(shù)的度為2

C.二叉樹(shù)的左右子樹(shù)可任意交換

D.深度為K的完全二叉樹(shù)的結(jié)點(diǎn)個(gè)數(shù)小于或等于深度相同的滿二叉樹(shù)

 

13.包含類fstream定義的頭文件是( )。

A.fstream

B.ofstream

C.ifstream

D.iostream

 

14.基類和派生類可以分別叫做( )。

A.“大類”和“小類”

B.“父類”和“子類”

C.“小類”和“大類”

D.“子類”和“父類”

 

15.撤消對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用( )函數(shù)。

A.成員函數(shù)

B.構(gòu)造函數(shù)

C.析構(gòu)函數(shù)

D.普通函數(shù)

 

16.關(guān)于對(duì)象成員的構(gòu)造函數(shù)的調(diào)用順序,說(shuō)法正確的是( )。

A.與它們?cè)诔蓡T初始化列表中給出的順序相同

B.與析構(gòu)函數(shù)的調(diào)用順序相同

C.與它們?cè)陬愔姓f(shuō)明順序相同

D.以上說(shuō)法都不對(duì)

 

17.有關(guān)類和對(duì)象的說(shuō)法不正確的是( )。

A.對(duì)象是類的一個(gè)實(shí)例

B.一個(gè)類只能有一個(gè)對(duì)象

C.任何一個(gè)對(duì)象只能屬于一個(gè)具體的類

D.類與對(duì)象的關(guān)系和數(shù)據(jù)類型和變量的關(guān)系相似

 

18.關(guān)于類和對(duì)象不正確的說(shuō)法是( )。

A.類是一種類型,它封裝了數(shù)據(jù)和操作

B.對(duì)象是類的實(shí)例

C.一個(gè)類的對(duì)象只有一個(gè)

D.一個(gè)對(duì)象必屬于某個(gè)類

 

19.在C++中,要實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,可以使用( )調(diào)用虛函數(shù)。

A.類名

B.派生類指針

C.對(duì)象名

D.基類指針

 

20.下面描述中,錯(cuò)誤的是( )。

A.在基類定義的public成員在公有繼承的派生類中可見(jiàn),也能在類外被訪問(wèn)

B.在基類定義的public和protected成員在私有繼承的派生類中可見(jiàn),在類外可以被訪問(wèn)

C.在基類定義的public和protected成員在保護(hù)繼承的派生類中可見(jiàn)

D.在派生類中不可見(jiàn)的成員要變成可訪問(wèn)的,需要進(jìn)行訪問(wèn)聲明

 

二、多選題 (共 5 道試題,共 10 分)

21.已知Circle類定義如下所示,則下列說(shuō)法正確的是( )。 class Circle { public: double m_x,m_y; double m_radius; void setCenter(double x,double y) { m_x=x; m_y=y; } void setRadius(double radius) { m_radius=radius; } double getArea( ) { return 3.14 * m_radius * m_radius; } };

A.m_x、m_y和m_radius都是Circle類的成員變量

B.setCenter、setRadius和getArea都是Circle類的成員函數(shù)

C.類定義體后面的分號(hào)可以省略

D.將double m_radius;改為double m_radius=1;,則表示m_radius成員變量的初值為1

 

22.對(duì)靜態(tài)成員的錯(cuò)誤描述是( )。

A.靜態(tài)成員不屬于對(duì)象,是類的共享成員

B.靜態(tài)數(shù)據(jù)成員要在類外定義和初始化

C.調(diào)用靜態(tài)成員函數(shù)時(shí)要通過(guò)類或?qū)ο蠹せ?,所以靜態(tài)成員函數(shù)擁有this指針

D.靜態(tài)成員函數(shù)可以操作非靜態(tài)數(shù)據(jù)成員

 

23.下列關(guān)于函數(shù)模板的描述中,正確的是( )。

A.函數(shù)模板和普通函數(shù)重載時(shí),函數(shù)調(diào)用會(huì)優(yōu)先調(diào)用符合要求的普通函數(shù)

B.函數(shù)模板和普通函數(shù)重載時(shí),函數(shù)調(diào)用會(huì)優(yōu)先調(diào)用符合要求的函數(shù)模板

C.函數(shù)模板的主要作用是減少可執(zhí)行程序文件的尺寸

D.函數(shù)模板的主要作用是簡(jiǎn)化程序編寫

 

24.下面對(duì)析構(gòu)函數(shù)的正確描述是( )。

A.系統(tǒng)可以提供默認(rèn)的析構(gòu)函數(shù)

B.析構(gòu)函數(shù)必須由用戶定義

C.析構(gòu)函數(shù)沒(méi)有參數(shù)

D.析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù)

 

25.當(dāng)類的繼承方式為公有繼承時(shí),基類的()成員的訪問(wèn)屬性在派生類中不變

A.公有成員

B.保護(hù)成員

C.私有成員

D.友元成員

 

三、判斷題 (共 10 道試題,共 20 分)

26.在線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中,插入和刪除操作時(shí),元素移動(dòng)次數(shù)與插入和刪除元素的位置有關(guān)。

 

27.線性表中的元素可以是任意類型的,但同一線性表中的數(shù)據(jù)元素必須具有相同的類型。

 

28.getline()函數(shù)從流中提取終止字符,但終止字符被丟棄。

 

29.在面向?qū)ο蟪绦蛟O(shè)計(jì)中,每個(gè)對(duì)象可以單獨(dú)設(shè)置屬性值。

 

30.在刪除一個(gè)動(dòng)態(tài)對(duì)象時(shí),將自動(dòng)調(diào)用該動(dòng)態(tài)對(duì)象所屬類的析構(gòu)函數(shù)。

 

31.對(duì)鏈表進(jìn)行插入和刪除操作時(shí)不必移動(dòng)鏈表中的結(jié)點(diǎn)。

 

32.一個(gè)類的構(gòu)造函數(shù)中可以不包含對(duì)其子對(duì)象的初始化。

 

33.對(duì)象成員的訪問(wèn)與結(jié)構(gòu)變量成員的訪問(wèn)相同,使用運(yùn)算符.或->。

 

34.對(duì)于樹(shù)中的任一結(jié)點(diǎn),如果其各棵子樹(shù)的相對(duì)次序被用來(lái)表示數(shù)據(jù)之間的關(guān)系,即交換子樹(shù)位置會(huì)改變樹(shù)所表示的內(nèi)容,則稱該樹(shù)為有序樹(shù);否則稱為無(wú)序樹(shù)。

 

35.線性表的順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是邏輯關(guān)系上相鄰的兩個(gè)元素在物理位置上也相鄰。

 

四、主觀填空題 (共 2 道試題,共 20 分)

36.下面的程序是在SHUZU類中重載運(yùn)算符[],程序的運(yùn)行結(jié)果為“B[4]=6”,請(qǐng)將程序補(bǔ)充完整。

#include <iostream>

using namespace std;

class SHUZU

{   

private:

  int *v;

  int s;

public:

  SHUZU( int a[], int n );

  ~SHUZU( )

  {    

delete []v;  

}                                  

  int size()

  {  

return s;  

}

  int&##(int i);

};

SHUZU::SHUZU(int a[], int n)       

{  

if( n<=0 )

  {  

v=NULL;

s=0;

return;  

}

  s=n;

  v= new int[s] ;

  for(int i=0; i<n; i++)

v[i]=a[i];

}

int& SHUZU::operator[](int i)

{

return v[i];

}

int main()

{

int b[7]={0,2,3,4,6,7,10};

SHUZU B(b,7);

cout<<"B[4]="<<##;

return 0;

}

 

37.下面的程序是在str類中重載運(yùn)算符=,請(qǐng)將程序補(bǔ)充完整,使程序的輸出結(jié)果為:

he

she

he

he

#include <iostream>

using namespace std;

class str

{

private:

 char *st;

public:

 str(char *a)

 {

 set(a);

 }

 str & operator=(##  )

 {

 delete []st;

 set(a.st);

 return *this;

 }

 void show()

 {

 cout<<st<<endl;

 }

 ~str()

 {

 delete []st;

 }

 void set(char *s)

 {  

 st=new char[strlen(s)+1];

 strcpy(st,s);

 }

};

int main()

{

str s1("he"),s2("she");

s1.show();

s2.show();

##;

s1.show();

s2.show();

}

 

五、問(wèn)答題 (共 1 道試題,共 10 分)

38.讀程序?qū)懡Y(jié)果題,具體題目?jī)?nèi)容如下:

已知順序表類模板的C++描述如下:

template<class T>

class LinearList

{

public:

   LinearList(int LLMaxSize); //構(gòu)造函數(shù),創(chuàng)建空表

   ~LinearList();   //析構(gòu)函數(shù),刪除表

   LinearList<T>& Insert(int k,const T& x);

//在第k個(gè)位置插入元素x,返回插入后的線性表

   bool IsEmpty() const;  

//判斷表是否為空,表空返回true,表非空返回false

   int GetLength() const;  //返回表中數(shù)據(jù)元素的個(gè)數(shù)

   bool GetData(int k,T& x);  

//將表中第k個(gè)元素保存到x中,不存在則返回false

   bool ModifyData(int k,const T& x);

//將表中第k個(gè)元素修改為x,不存在則返回false

   int Find(const T& x); //返回x在表中的位置,如果x不在表中返回0

   LinearList<T>& DeleteByIndex(const int k, T& x);

//刪除表中第k個(gè)元素,并把它保存到x中,返回刪除后的線性表

   LinearList<T>& DeleteByKey(const T& x,T& y);

//刪除表中關(guān)鍵字為x元素,返回刪除后的線性表

   void OutPut(ostream& out) const;

//將線性表放到輸出流out中輸出

private:

   int length;   //當(dāng)前數(shù)組元素個(gè)數(shù)

   int MaxSize;   //線性表中最大元素個(gè)數(shù)

   T *element;   //一維動(dòng)態(tài)數(shù)組

};

int main()

{

   LinearList<int> IntegerLList(10);

   int i,x;

   for(i=1;i<11;i++)

       IntegerLList.Insert(i,i*5);

   for(i=2;i<=3;i++)

   {

      IntegerLList.DeleteByIndex(i,x);

      cout<<x<<endl;

   }

   cout<<endl;

   return 0;

}

請(qǐng)寫出主函數(shù)main執(zhí)行后在屏幕上的輸出結(jié)果。

 


  • 上一篇:
  • 下一篇:
  • 作業(yè)咨詢 論文咨詢
    微信客服掃一掃

    回到頂部