该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我这里有之前有用c++写过 所以~~~
c语言过些时候在给出咯~~
#include
using namespace std;
const int nPWS =30; //评委数
const int nSingers =20; //参赛选手数
typedef struct _TSinger
{
char szName[20]; //20
double nScore[nPWS]; //12
double nLScore;
}TSinger;
//
class Application
{
private:
TSinger Singers[20];
TSinger *pSin[20];
int nChoice; //用户选项
void dispMenu1()
{
cout<
cout<
cout<
}
void dispMenu()
{
cout<
cout<
cout<
cout<
cout<
cout<
}
void getChoice()
{
cout<
cin>>nChoice;
}
void SortSingersByLSCore()
{
int i,j;
int index;
TSinger *pTemp; //临时记录LScore最大的歌手
double nMaxScore;
for(i=0; i
{
nMaxScore = pSin[i]->nLScore;
index = i;
for(j=i+1; j
{
if(nMaxScore nLScore)
{
nMaxScore = pSin[j]->nLScore;
index = j;
}
}
if(i!=index)
{
pTemp = pSin[index];
pSin[index] = pSin[i];
pSin[i] = pTemp;
}
}
}
public:
//
//初始化歌手结构体指针
void InitSingerPtr()
{
int i;
for (i=0;i<20;i++)
{
pSin[i]=&(Singers[i]);
memset(pSin[i],0,sizeof(TSinger));
}
}
void InputScores4AllSingers()
{
int i,j;
double nMin, nMax, nSum;
for(i=0;i
{
//录入选手的姓名
cin.ignore();
cout<
cout<
cin.getline(pSin[i]->szName,19);
//录入12名评委的打分----暂时按照nPWS评委测试
cout<
for(j = 0; j
{
cout<
cin>>pSin[i]->nScore[j];
}
//去除最值
nMin = pSin[i]->nScore[0];
nSum = nMin;
nMax = nMin;
for(j=1;j
{
nSum += pSin[i]->nScore[j];
//如果当前分数小于nMin
if( pSin[i]->nScore[j] nScore[j]
nMin = pSin[i]->nScore[j];
else
if( pSin[i]->nScore[j] > nMax ) //pSin[i]->nScore[i]
nMax = pSin[i]->nScore[j];
}
//计算平均
pSin[i]->nLScore = (nSum- nMax - nMin)/(nPWS-2);
cout<
cout<nLScore<
}
}
void Run()
{
do
{
dispMenu();
getChoice();
switch (nChoice)
{
case 1:
cout<
InitSingerPtr();
InputScores4AllSingers();
SortSingersByLSCore();
break;
case 2:
int i,j;
//SortSingersByLSCore();
for(i=0;i
{
cout<szName;
cout<
for(j=0; j
{
cout<nScore[j]<
}
cout<
cout<nLScore<
}
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
cout<
}
}while(nChoice!=5);
}
};
int main(int argc, char* argv[])
{
Application App;
App.Run();
return 0;
}