上機(jī)部分
一、改錯題
使用VC6打開考生文件夾下的工程kt20_1,此工程包含一個源程序文件kt20_1.cpp,但該程序運(yùn)行有問題,請改正函數(shù)中的錯誤,使該程序的輸出結(jié)果為:
Thefirstresultis5
Thesecondresultis2
Thethirdresultis2
Thefourthresultis6
源程序文件kt20_1.cpp清單如下:
#include
intsubtraction(inta,intb)
{ intr;
r=a-b;
/*****************found*****************/
return&r; }
intmain()
{ intx=5,y=3,z;
z=subtraction(7,2);
cout<<"Thefirstresultis"<
cout<<"Thesecondresultis"<
/*****************found*****************/
cout<<"Thethirdresultis"<
/*****************found*****************/
z=4+*subtraction(x,y);
cout<<"Thefourthresultis"<
return0; }
【參考答案】
(1)將return &r; 改為:return r;
(2)將cout << "The third result is " << subtraction (&x,&y) << '\n';
改為:cout << "The third result is " << subtraction (x,y) << '\n';
(3)將z= 4 + *subtraction (x,y);
改為:z= 4 + subtraction (x,y);
【試題解析】
(1)主要考查對于函數(shù)的返回值類型的理解,題目中函數(shù)的定義是int型的,所以應(yīng)該返回一個該類型的參數(shù),這里的錯誤就在于它返回了一個int型參數(shù)的地址,如果把函數(shù)返回值定義成int型的指針,那么這種返回方式就正確了;
(2)主要考查對已經(jīng)定義好參數(shù)類型和個數(shù)的函數(shù),題目中的函數(shù)subtraction ()已經(jīng)定義好了,是兩個int型的參數(shù),但是這里錯誤的調(diào)用了兩個參數(shù)的地址,使得本來是傳值調(diào)用變成了傳址調(diào)用,所以會報(bào)錯,傳值調(diào)用是把參數(shù)的數(shù)值復(fù)制后傳入函數(shù)中,不改變原函數(shù)中參數(shù)的值,而傳址調(diào)用是把參數(shù)在內(nèi)存中的地址傳進(jìn)函數(shù)中,函數(shù)對參數(shù)的任何作用都會改變原函數(shù)中參數(shù)的值;
(3)主要考查對函數(shù)調(diào)用的掌握,函數(shù)subtraction ()是一個普通函數(shù),調(diào)用的時候直接寫函數(shù)名和適當(dāng)?shù)膮?shù)就可以了。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |