C++ 歌手大奖赛计分系列

来源:互联网 发布:二次型的矩阵的标准型 编辑:程序博客网 时间:2024/05/22 01:52

/* *歌手大奖赛计分系列 *(1)在歌手大奖赛中,有10个评委为参赛的选手打分,分数为0~10分(运行时由人控制)。 *    选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。 *(2)将计算选手成绩的功能(包括输入成绩、计算和显示结果)利用一个函数void calScore(int n)实现。 *    为增大函数的适用面,有评委人数由函数的参数n决定(这样,在main函数调用时,需要将评委人数作为实参)。 *(3)进一步完善(2)的程序。输入时,难免有录入错误发生,如果输入的成绩不在0-10之间, *   要求用户立即重新输入(在函数calScore中修改); *   一次运行程序只计算一位选手成绩太麻烦,要求输出当前选手的最后得分后, *   提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输入的不是N或n, *   可以为下一位选手计算成绩(在main函数中进行控制即可)。 */void callScore(int n){    cout<<"大赛有 "<<n<<"  位评委"<<endl;    if(n<=0)    {        return;    }     float *aScore = new float[n];    int i=1;     while(i<=n)    {        cout<<"第 "<<i<<" 位评委的分数(0.00-10.00): "<<endl;        cin>>aScore[i-1];         // 出错处理,防止输入非数字字符。        if (cin.fail())         {            cin.clear();            cin.ignore();            continue;        }        if(aScore[i-1] < 0 || aScore[i-1] > 10)        {            cout<<"输入的成绩不再0-10之间,重新输入!"<<endl;            continue;        }        i++;    }     //去掉一个最高分,去掉一个最低分    float max = 0;    float min = aScore[0];    float sum = 0;    float score = 0;    for(int j=0;j<n;j++)    {        aScore[j] >= max?max=aScore[j]:max;        aScore[j] >= min?min:min=aScore[j];        sum+=aScore[j];    }     //最后得分    cout<<"去掉一个最高分: "<<max<<endl;    cout<<"去掉一个最低分: "<<min<<endl;     score=(sum-max-min)*1.0/n;    cout<<"选手最后得分: "<<score<<endl;}
void main(){char ch;while(true){cout<<"按任意键计算选手的成绩,退出请选择N(n):";cin>>ch;if(ch=='N'||ch=='n'){break;}callScore(5);}}



原创粉丝点击