三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt6_3,此工程包含一個(gè)源程序文件kt6_3.cpp,其中定義了用于表示考生的類Student,請按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義私有數(shù)據(jù)成員code、english分別用于表示考生的編號、英語成績、它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成成員函數(shù)voidStudent::inputinformation()的定義,該函數(shù)用于用戶輸入一個(gè)考生對象的信息,輸入格式如下所示:
輸入編號:
英語成績:
計(jì)算機(jī)成績:
請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。
(3)利用已實(shí)現(xiàn)的類Student的成員函數(shù),完成函數(shù)voidfirstname(Student*A[],intnum)的定義,該函數(shù)根據(jù)考生信息A[],輸出num個(gè)考生中總分最高者的編號及其相應(yīng)的總分,在此不考慮總分相同的情況。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。
源程序文件kt6_3.cpp清單如下:
#include
classStudent
{//**1**
intcomputer;
inttotal;
public:
voidgetinformation();
voidcomputesum();
intgetcode();
intgettotalscore();
~Student();};
voidStudent::getinformation()
{//**2**
cout<<"英語成績:";
cin>>english;
cout<<"計(jì)算機(jī)成績:";
cin>>computer;}
voidStudent::computesum()
{total=english+computer;
cout<<"編號"<
intStudent::getcode()
{returncode;}
intStudent::gettotalscore()
{returntotal;}
voidfirstname(Student*A[],intnum)
{
//**3**
tempsum=(*A[0]).gettotalscore();
for(inti=1;i
{
if(((*A[i]).gettotalscore())>tempsum)
{tempcode=(*A[i]).getcode();
tempsum=(*A[i]).gettotalscore();}
}
cout<<"總分最高者--"<
}
voidmain()
{Student*A[3];
inti,n=3;
for(i=0;i
{A[i]=newStudent;
A[i]->getinformation();}
for(i=0;i
{A[i]->computesum();}
firstname(A,3);}
【參考答案】
(1)int code;
int english;
(2)cout<<"輸入編號:";
cin>>code;
(3)int tempcode,tempsum;
tempcode=(*A[0]).getcode();
【試題解析】
本題是對C++程序設(shè)計(jì)的綜合考查,其設(shè)計(jì)類的成員及成員函數(shù)的定義與調(diào)用,數(shù)據(jù)的輸入輸出,for循環(huán)語句,if條件判斷語句等多個(gè)知識(shí)點(diǎn),其中(3)中為指針數(shù)組的使用,指針數(shù)組是一組指針,每一個(gè)成員都按照指針的操作規(guī)則,但是整個(gè)訪問規(guī)則仍然使用數(shù)組下標(biāo)方式,如A[0]指的是第一個(gè)指針,而* A[0]是取出第一個(gè)指針指向的內(nèi)容。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |