第 1 頁:上機試題 |
第 3 頁:參考答案 |
一、程序改錯題
(1)“d3=(d1 (2)“d3=(d2)?d1\d2:-l;”應改為“d3=(d2)?d1/d2:-l;”。
(3)“d3=(--dl)+(d2++);”應改為“d3=(d1++)+(d2--);或d3=(++d1)+(--d2);”。
【解析】本題考查了考生對條件表達式和自增自減運算符了解的情況。d3應為d1和d2中較大者的值,所以“(d1(d2)”應改為“(d1>d2)”。若d2不為0,應返回d1/d2的值,而不是d1\d2。第3處應該輸d1+1d2-l,所以兩者的+
+、--應反過來。又因為d3應該是兩者原值之和,所以++、--應同時為后綴式或前綴形式。
二、簡單應用題
//必須使用遞歸
jntfunl(intn)
{
if(n<=0)
return0;
if(n==1)
return1;
returnn*funl(n-1);
};
//不能使用遞歸
intfun2(intn)
{
if(n<=0)
retturn0;
intres=1:
for(inti=1;i<=n;i++)
{
res*=i;
}
returnres;
}
【解析】本題考查的是遞歸函數和階乘算法。遞歸的階乘算法可以通過判斷傳入參數,如果大于1,則返回n*funl(n-1),意思是返回n乘以n-1的階乘;如果等于1,則返回1。這樣遞歸下去就能最終得出n的階乘。非遞歸算法可以先建立一個累乘變量,并初始化為1,然后循環遍歷1~n,將遍歷的數累乘到變量中即可。
三、綜合應用題
(1)“while()”應改為“while(infile.get(ch))”。
(2)應添加“bur[len++]=ch;bur[len]=ch;len++;”。
(3)應添加“outfile2< (4)“TCobj();”應改為“TCobi("in.txt");”。
【解析】本題考查了文件流的使用。根據題意,第1處要獲得一個字符,并判斷是否到文件結尾,所以應使用get函數;第2處應將ch存入buf數組,同時讓len增1;第3處將buf中的字節輸出給outfile2,注意同時讓i增1,否則while循環將進入死循環;第4處TC只確一個帶char*參數的構造函數,所以創建對象時必須使用構造參數,根據題意這個參數應該是“"in.txt"”。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: