C语言:歌星大奖赛中,有十个评委为参赛的选手打分,分数为1-100分,选手最后得分为去掉一个最高分

和一个最低分后其余8个分数的平均值,请编写一个程序实现。😭拜托帮帮忙我完全不会,这学期刚学的!

代码如下

#include <iostream>

using namespace std;

int main()

{int a[10],f[10],i,k,m,n,b,c,y,p,q,d,average,h,g;

cout<<"输入十位评委按顺序的打分:";

for(i=0;i<10;i++)

{cin>>a[i];

}                              

for(b=0;b<10;b++)

{while(a[b]>100||a[b]<0)

{cout<<"选手得分超出规定范围,请第"<<b+1<<"位评委重新打分!"<<endl;

cin>>a[b];

}

}

m=a[0];n=a[0];

for(k=0,c=0;k<9;k++)

{

 if(m<=a[k+1])  m=a[k+1];

 if(n>=a[k+1])  n=a[k+1];

 c=c+a[k];

}

c=c+a[9];

y=c-m-n;


average=y/8;

for(p=0;p<10;p++)

{f[p]=a[p]-average;

if(f[p]<0) {f[p]=-f[p];}

}

q=f[0];d=f[0];

for(k=0,h=1;k<9;k++)

{

 if(q<=f[k+1])  q=f[k+1] ,h=k+2;

 if(d>=f[k+1])  d=f[k+1],g=k+2;

}

cout<<"选手的平均分是"<<average<<endl;

cout<<"最公平评委是第"<<g<<"位评委。"<<endl;

cout<<"最不公平评委是第"<<h<<"位评委。"<<endl;

return 0;

}

C语言代码技巧

1、使用合适的条件语句

除代码的可读性之外,程序的执行时间还主要依赖于做决定时所选择的条件结构类型。许多硬件工程师都熟悉简单的if语句的使用。然而,有时工程师可能没有意识到,如果第一个条件不正确,还可以使用else或else if语句。

2、用If/Else替代只用If

If/else if/else语句可能并不永远适用。如果需要检查若干个可能的条件,switch语句可能更合适。这样,处理器可以评估语句,然后从一个答案列表中选择下一步动作,而不用连续地评估一堆条件。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-06-05

#include <stdio.h>


int a[11];

int maxx, minn = 101;

double ans;


int main()

{

    for(int i = 1; i <= 10; i ++ )

    {

        scanf("%d", &a[i]);

    }

    for(int i = 1; i <= 10; i ++ )

    {

        if(a[i] > maxx)

        {

            maxx = a[i];

        }

        if(a[i] < minn && a[i] > 0)

        {

            minn = a[i];

        }

    }

    for(int i = 1; i <= 10; i ++ )

    {

        ans += a[i];

    }


    printf("%.1lf", (ans - maxx - minn) / 8);

    return 0;

}

这个是代码

配图在这里

相关说明:

主要是输入输出以及数据的计算进行要求,我们只需要将十个评委的分数加起来,然后再去掉最高和最低分,再除以八就可以得出结果。

本回答被网友采纳
第2个回答  2019-01-03

#include <stdio.h>
#include <stdlib.h>

int main(){
    int array[10];
    int sum = 0;
    int i, j, t;
    for(i=0;i<10;i++){
        scanf("%d", &array[i]);
    }
    //选择排序
    for(i=0;i<10;i++){
        for(j=0;j<i;j++){
            if(array[i] < array[j]){
                t = array[i]; array[i] = array[j]; array[j] = t;
            }
        }
    }
    //排序完成后,最大值和最小值在array[0]和array[9]
    for(i=1;i<9;i++){
        sum += array[i];
    }
    printf("平均成绩是%lf\n", sum*1./8);
    return 0;
}

编程不易,还望采纳😭

本回答被提问者采纳
第3个回答  2019-01-03
最后得分是选手的得分
相似回答