可做奧鵬院校所有作業(yè),畢業(yè)論文,咨詢請?zhí)砑観Q:3230981406 微信:aopopenfd777
《程序設(shè)計基礎(chǔ)(下)》20春期末考核 -00001
試卷總分:100 得分:100
一、單選題 (共 20 道試題,共 40 分)
1.類模板的靜態(tài)數(shù)據(jù)成員由( )共享。
A.一個類模板的所有模板類
B.一個模板類的所有對象
C.一個模板類的一個對象
D.一個類模板的所有對象
答案:B
2.設(shè)線性表有n個元素,以下算法中,( )在順序表上實現(xiàn)比在鏈表上實現(xiàn)效率更高。
A.輸出第i(0≤i≤n—1)個元素值
B.交換第0個元素與第1個元素的值
C.順序輸出這n個元素的值
D.輸出與給定值x相等的元素在線性表中的序號
答案:A
3.在一個無向圖中,若兩頂點之間的路徑長度為k,則該路徑上的頂點數(shù)為( )。
A.k
B.k+1
C.k+2
D.2k
答案:B
4.在一個鏈接隊列中,假設(shè)f和r 分別是隊頭和隊尾指針,則刪除一個結(jié)點的運算時( )。
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ù)必須指定類型說明
6.在一個長度為n的順序存儲的線性表中,向第i個元素(1≤i≤n+1)位置插入一個新元素時,需要將( )個元素向后移動一個位置。
A.n-i
B.n-i+1
C.n-i-1
D.i
7.在二叉樹的第i層上至多有( )個結(jié)點(i≥1)。
A.2的i次方減1
B.2的i-1次方
C.2的i次方加+1
D.2的i+1次方
8.對于任意一個類,析構(gòu)函數(shù)的個數(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.在一棵完全二叉樹中,根結(jié)點的編號為1,按照由上到下由左到右的順序為二叉樹結(jié)點編號。若編號為5的結(jié)點存在右孩子,則右孩子結(jié)點的編號為( )。
A.9
B.10
C.11
D.12
12.在下述結(jié)論中,正確的是( )。
A.在樹中,互為堂兄弟的結(jié)點擁有相同的雙親
B.二叉樹的度為2
C.二叉樹的左右子樹可任意交換
D.深度為K的完全二叉樹的結(jié)點個數(shù)小于或等于深度相同的滿二叉樹
13.包含類fstream定義的頭文件是( )。
A.fstream
B.ofstream
C.ifstream
D.iostream
14.基類和派生類可以分別叫做( )。
A.“大類”和“小類”
B.“父類”和“子類”
C.“小類”和“大類”
D.“子類”和“父類”
15.撤消對象時,系統(tǒng)自動調(diào)用( )函數(shù)。
A.成員函數(shù)
B.構(gòu)造函數(shù)
C.析構(gòu)函數(shù)
D.普通函數(shù)
16.關(guān)于對象成員的構(gòu)造函數(shù)的調(diào)用順序,說法正確的是( )。
A.與它們在成員初始化列表中給出的順序相同
B.與析構(gòu)函數(shù)的調(diào)用順序相同
C.與它們在類中說明順序相同
D.以上說法都不對
17.有關(guān)類和對象的說法不正確的是( )。
A.對象是類的一個實例
B.一個類只能有一個對象
C.任何一個對象只能屬于一個具體的類
D.類與對象的關(guān)系和數(shù)據(jù)類型和變量的關(guān)系相似
18.關(guān)于類和對象不正確的說法是( )。
A.類是一種類型,它封裝了數(shù)據(jù)和操作
B.對象是類的實例
C.一個類的對象只有一個
D.一個對象必屬于某個類
19.在C++中,要實現(xiàn)動態(tài)聯(lián)編,可以使用( )調(diào)用虛函數(shù)。
A.類名
B.派生類指針
C.對象名
D.基類指針
20.下面描述中,錯誤的是( )。
A.在基類定義的public成員在公有繼承的派生類中可見,也能在類外被訪問
B.在基類定義的public和protected成員在私有繼承的派生類中可見,在類外可以被訪問
C.在基類定義的public和protected成員在保護(hù)繼承的派生類中可見
D.在派生類中不可見的成員要變成可訪問的,需要進(jìn)行訪問聲明
二、多選題 (共 5 道試題,共 10 分)
21.已知Circle類定義如下所示,則下列說法正確的是( )。 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.類定義體后面的分號可以省略
D.將double m_radius;改為double m_radius=1;,則表示m_radius成員變量的初值為1
22.對靜態(tài)成員的錯誤描述是( )。
A.靜態(tài)成員不屬于對象,是類的共享成員
B.靜態(tài)數(shù)據(jù)成員要在類外定義和初始化
C.調(diào)用靜態(tài)成員函數(shù)時要通過類或?qū)ο蠹せ?,所以靜態(tài)成員函數(shù)擁有this指針
D.靜態(tài)成員函數(shù)可以操作非靜態(tài)數(shù)據(jù)成員
23.下列關(guān)于函數(shù)模板的描述中,正確的是( )。
A.函數(shù)模板和普通函數(shù)重載時,函數(shù)調(diào)用會優(yōu)先調(diào)用符合要求的普通函數(shù)
B.函數(shù)模板和普通函數(shù)重載時,函數(shù)調(diào)用會優(yōu)先調(diào)用符合要求的函數(shù)模板
C.函數(shù)模板的主要作用是減少可執(zhí)行程序文件的尺寸
D.函數(shù)模板的主要作用是簡化程序編寫
24.下面對析構(gòu)函數(shù)的正確描述是( )。
A.系統(tǒng)可以提供默認(rèn)的析構(gòu)函數(shù)
B.析構(gòu)函數(shù)必須由用戶定義
C.析構(gòu)函數(shù)沒有參數(shù)
D.析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù)
25.當(dāng)類的繼承方式為公有繼承時,基類的()成員的訪問屬性在派生類中不變
A.公有成員
B.保護(hù)成員
C.私有成員
D.友元成員
三、判斷題 (共 10 道試題,共 20 分)
26.在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,插入和刪除操作時,元素移動次數(shù)與插入和刪除元素的位置有關(guān)。
27.線性表中的元素可以是任意類型的,但同一線性表中的數(shù)據(jù)元素必須具有相同的類型。
28.getline()函數(shù)從流中提取終止字符,但終止字符被丟棄。
29.在面向?qū)ο蟪绦蛟O(shè)計中,每個對象可以單獨設(shè)置屬性值。
30.在刪除一個動態(tài)對象時,將自動調(diào)用該動態(tài)對象所屬類的析構(gòu)函數(shù)。
31.對鏈表進(jìn)行插入和刪除操作時不必移動鏈表中的結(jié)點。
32.一個類的構(gòu)造函數(shù)中可以不包含對其子對象的初始化。
33.對象成員的訪問與結(jié)構(gòu)變量成員的訪問相同,使用運算符.或->。
34.對于樹中的任一結(jié)點,如果其各棵子樹的相對次序被用來表示數(shù)據(jù)之間的關(guān)系,即交換子樹位置會改變樹所表示的內(nèi)容,則稱該樹為有序樹;否則稱為無序樹。
35.線性表的順序存儲結(jié)構(gòu)的特點是邏輯關(guān)系上相鄰的兩個元素在物理位置上也相鄰。
四、主觀填空題 (共 2 道試題,共 20 分)
36.下面的程序是在SHUZU類中重載運算符[],程序的運行結(jié)果為“B[4]=6”,請將程序補充完整。
#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類中重載運算符=,請將程序補充完整,使程序的輸出結(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();
}
五、問答題 (共 1 道試題,共 10 分)
38.讀程序?qū)懡Y(jié)果題,具體題目內(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個位置插入元素x,返回插入后的線性表
bool IsEmpty() const;
//判斷表是否為空,表空返回true,表非空返回false
int GetLength() const; //返回表中數(shù)據(jù)元素的個數(shù)
bool GetData(int k,T& x);
//將表中第k個元素保存到x中,不存在則返回false
bool ModifyData(int k,const T& x);
//將表中第k個元素修改為x,不存在則返回false
int Find(const T& x); //返回x在表中的位置,如果x不在表中返回0
LinearList<T>& DeleteByIndex(const int k, T& x);
//刪除表中第k個元素,并把它保存到x中,返回刪除后的線性表
LinearList<T>& DeleteByKey(const T& x,T& y);
//刪除表中關(guān)鍵字為x元素,返回刪除后的線性表
void OutPut(ostream& out) const;
//將線性表放到輸出流out中輸出
private:
int length; //當(dāng)前數(shù)組元素個數(shù)
int MaxSize; //線性表中最大元素個數(shù)
T *element; //一維動態(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;
}
請寫出主函數(shù)main執(zhí)行后在屏幕上的輸出結(jié)果。