voidmain(void)
{personp1("张三");
personp2=p1;
cout<<"姓名:
";p1.print_name();
cout<<"姓名:
";p2.print_name();
}
问题:
⑾程序中①处应为;
②处应为;
③处应为;
④处应为;
⑤处应为;
程序5(exp_102.cpp)
//头文件“hscore.h”内容:
定义一个成绩类:
最多可以处理10科成绩及平均成绩
constintM=10;
classscore
{private:
floatsc[M],aver;//表示M科成绩的数组及平均成绩
intm;//表示实际考试科数
public:
score(void);//无参构造函数
score(floatx[],intn);//构造函数重载——初始化成绩
voidset_score(floatx[],intn);//提供成绩
floatget_score(inti)//得到第i科成绩
{returnsc[i];}
floatget_aver(void)//得到平均成绩
{returnaver;}
voidprint_score(void);
};
score:
:
score(void)//无参构造函数
{inti;
m=M;
for(i=0;isc[i]=0;
aver=0;
}
score:
:
score(floatx[],intn)//构造函数重载——初始化成绩
{inti;floatsum=0;
m=n;
①;
aver=sum/m;
}
voidscore:
:
set_score(floatx[],intn)//提供成绩
{inti;floatsum=0;
m=n;
②;
aver=sum/m;
}
voidscore:
:
print_score(void)//输出成绩、平均成绩
{inti;
for(i=0;icout<<""<cout<<""<}
问题:
⑿完善类的定义,程序中,①处应改为:
②处应改为:
//程序“exp_205.cpp”:
用成绩类“score”处理成绩:
任意个学生,任意科(不超过10科)
#include
#include"hscore.h"//调入成绩score类的定义头文件
voidinput(score*p,intn,intm);//普通函数:
输入学生成绩
voidprint(score*p,intn,intm);//普通函数:
输出学生成绩
score&average(score*p,intn,intm);//普通函数:
平均成绩计算
voidsort(score*p,intn,intm);//普通函数:
按平均成绩排序
voidmain(void)
{intn,m;
cout<<"学生人数:
";cin>>n;
cout<<"考试科数:
";cin>>m;
score*p,aver;
p=①;//动态数组:
用于处理n个学生成绩
if(p==NULL)
{cout<<"内存分配失败!
"<return;
}
input(②);//调用输入成绩函数
print(②);//调用输出成绩函数
aver=average(②);//调用平均值计算函数
aver.print_score();//输出各科平均成绩
sort②);//成绩排序
print(②);//调用输出成绩函数
③;//释放内存
}
voidinput(score*p,intn,intm)
{inti,j;floatx[M];
for(i=0;i{cout<<"第"<
"<for(j=0;j{cout<<"第"<";
cin>>x[j];
}
④;//为某个学生对象提供成绩
}
}
voidprint(score*p,intn,intm)//成绩输出函数
{inti;
for(i=0;i⑤;//输出某学生的成绩
}
score&average(score*p,intn,intm)//用返回引用的方法
{inti,j;floats[M]={0};
staticscoreaver;//返回的对象必须是静态的
for(j=0;j{for(i=0;is[j]=s[j]+p[i].get_score(j);
s[j]=s[j]/n;
}
⑥;//对平均成绩对象提供值
returnaver;
}
voidsort(score*p,intn,intm)//选择法排序:
按平均成绩由高到低排列
{scoret;floata;
inti,j,k;
for(i=0;i{a=p[i].get_aver();k=i;
for(j=i+1;jif(a
{⑦}
if(k!
=i)
{⑧}
}
}
⒀完善main()函数,程序中
①处应为;
②处应为;
③处应为;
④处应为;
⑤处应为;
⑥处应为;
⑦处应为;
⑧处应为;
㈢程序设计实验
模拟一个裁判给比赛选手打分。
1.要求如下:
⑴裁判人数为UMPIRE;
⑵参赛选手为任意人;
⑶裁判给选手打分;
⑷去掉一个最高分,一个最低分,取其平均分为选手得分;
⑸按参赛选手的序号显示选手得分;
⑹按名次显示参赛选手得分(用插入法排序)。
2.提示:
⑴定义一个类名为Result的记分类为选手记分,数据成员至少包括选手编号(用整型)、姓名(用字符数组)、裁判为选手的打分及得分(用实型数组)等,成员函数自定(必须有构造函数),将类的定义保存在“result.h”中;
⑵测试程序(保存在exp_206.cpp中)采用交互方式:
①提示输入参赛选手人数;
②提示输入所有参赛选手的编号及姓名;
③显示比赛开始,请为选手打分;
④显示:
去掉的最高分、最低分,选手得分;
⑤比赛结束,按编号显示选手的得分;
⑥按名次显示选手得分。
四、实验收获与创新
自已拟定一个解决实际题目,分析并抽象为一个类,然后编写类的测试程序(类的定义放在头文件中,测试程序用exp_207.cpp保存),要求:
数据成员不少于三个,至少有一个数组成员或指针成员;
成员函数(方法)自定,但必须显示定义构造函数、析构函数、拷贝构造函数。