编程题
设计歌手类
包括编号,姓名,各评委打分等属性
可以打印当前最高分,最低分选手属性
打印已出场人数
可以按照平均分由高到低打印已出场选手属性
写出main函数中模拟n个选手出场的过程
使用静态函数
设计歌手类
包括编号,姓名,各评委打分等属性
可以打印当前最高分,最低分选手属性
打印已出场人数
可以按照平均分由高到低打印已出场选手属性
写出main函数中模拟n个选手出场的过程
使用静态函数
2017-04-23
//慢了楼上一步,呵呵.
//VC编译通过,功能也都实现了.
#include
#include
using namespace std;
#define N 5
class cSinger
{
private:
char sNum[3];
char *sName;//姓名
int sScore[N]; //成绩
double ave; //平均分
static int count; //累加计数器
public:
cSinger(char *sNumber,char *sN)
{
int i;
for(i=0;isNum[i]=sNumber[i];
sName=new char[strlen(sN)+1];
strcpy(sName,sN);
ave=0.0;
for(i=0;isScore[i]=0;
count++;
}
~cSinger(){delete[] sName;}
void sScored();
void sShow();
//float getScore(){return score;}
//float getAve(){return total;}
int getCount(){return count;}
double getAve(){return ave;}
int cmpToSinger(cSinger s2);
};
int cSinger::count=0;
void cSinger::sScored()
{
int i,sum=0;
coutfor(i=0;i{
cin>>sScore[i];
sum+=sScore[i];
}
ave=(double)sum/N;
coutfor(i=0;i coutcoutcoutcin>>sum;
if(sum!=0) sScored();
return;
}
void cSinger::sShow()
{
int i;
coutfor(i=0;i coutcout cout}
int cSinger::cmpToSinger(cSinger s2)
{
if(ave>s2.getAve()) return 1;
else if(ave==s2.getAve()) return 0;
else return -1;
}
void main()
{
int i,j,tem,maxIndex=0,minIndex=0;
int list[5]={0,1,2,3,4};
cSinger sSinger[5]={cSinger("001","nanhua"),cSinger("002","sueli"),cSinger("003","luli"),cSinger("004","wangxi"),cSinger("005","xiadi")};
//输入模块
for(i=0;i sSinger[i].sScored();
//最高最低分:
for(i=1;i{
if(sSinger[maxIndex].cmpToSinger(sSinger[i])if(sSinger[minIndex].cmpToSinger(sSinger[i])>0){minIndex=i;}
}
coutsSinger[maxIndex].sShow();
coutsSinger[minIndex].sShow();
//按平均分输出:
for(i=0;ifor(j=i+1;jif(sSinger[i].cmpToSinger(sSinger[j])coutfor(i=0;isSinger[(list[i])].sShow();
}
举报