第 1 頁:選擇題 |
第 5 頁:程序改錯 |
第 6 頁:綜合應用題 |
第 7 頁:參考答案 |
二、程序改錯題
(1)應改為“virtualvoidfun()=0;”。
(2)應改為“p=&obj1;”。
(3)應改為“p=&obj2;”。
【解析】如果在基類中不使用這個虛函數,其返回值也是沒有意義的,它應該被定義為純虛函數。所以虛函數fun應該是純虛函數,也就是聲明虛函數時初始化為0的函數。即第2處的“virtualvoidfun()=0;”。第2處的P為指針變量,將對象obj1賦值給P,實際上蹙P指向對象obj1的地址,所以將“p=*obj1;”修改為“P=&obj1;”。第3處的“P=*obj2;”修改為“p=&obj2;”。
三、簡單應用題
inti,j,k;
for(i=0;i<4;i++)//百位循環
{
for(j=0;j<4;j++)//十位循環
for(k=0;k<4;k++)//個位循環
{
if(i!=j&&j!=k&&k!=i&&N[i]!=0)//
當三位數不同,并且百位不為0
{
cout< }
}
}
【解析】本題利用3層循環,對3位數字是否相同進行判斷。如果3位數不同,并且百位不為0,那么依次輸出這3 位數,即由3位數組成的數字。
四、綜合應用題
(1)將“voidprint(){};”補充完整為“virtualvoidprint(){};”。
(2)應添加“sex=1;”。
(3)應添加“sex=0;”。
(4)應添加“voidfun(People&p)”。
【解析】第1處要求“基類People完成打印功能,定義其中的打印函數為虛函數”。虛函數是函數的一種,定義虛函數,在函數名前聲明virtual就可以了,所以將第1處的“voidprint(){}”語句修改為“virtualvoidprint(){}”。第2處要求“類Boy繼承于People,在構造函數中設置性別為l”。基類People中變量sex用來存放性別,Boy繼承People,所以Boy中性別的變量可以使用基類中的sex變量,設置性別為1,即“sex=1;”。第3處要求“類Girl繼承于People,在構造函數中設置性別為0”。在第3處添加語句“sex=0;”。第4處要求“實現函數fun,用于傳遞不同的類型,打印出性別”。根據“P.print();”語句知道,fun函數的形參為指針P,由于它調用了基類People中的成員函數print,所以P的基類為People,即添加函數fun的定義為“voidfun(People&p)”。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |