编写一段C语言程序完成此题: 歌手大奖赛上有10个评委(放在一个数组中)打分,请设计一个通用程序,

编写一段C语言程序完成此题: 歌手大奖赛上有10个评委(放在一个数组中)打分,请设计一个通用程序,,第1张

#include<stdioh>

#include<conioh>

#define _for(i,a,b) for(int i=a;i<b;i++)

using namespace std;

int scores[10];

double average,maxn,minn=0x7f,imax,imin;

int main(){

system("cls");

_for(i,0,10){

printf("Please input a score:");

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

average+=scores[i];

if(maxn<scores[i]){

maxn=scores[i];

imax=i;

}

if(minn>scores[i]){

minn=scores[i];

imin=i;

}

printf("\n");

}

average-=maxn+minn;

average/=80;

printf("\nThe average: %6lf\n",average);

printf("The max: %6lf\n",maxn);

printf("The min: %6lf\n",minn);

_for(i,0,10){

if(scores[i]>average){

printf("%d,%6lf\n",i+1,double(maxn));

}

}

printf("max: %d,%6lf\n",imax+1,maxn);

printf("min: %d,%6lf\n\n",imin+1,minn);

printf("Next singer < y or Y>: ");

char k=getch();

if(k=='y' || k=='Y')main();

return 0;

}

#include <stdioh>

#define PW_CNT 3

#define XS_CNT 1

int main(int argc, char argv[])

{

    float score[XS_CNT][PW_CNT] = {{00f}};

    float sum[XS_CNT] = {00f};

    float avg[XS_CNT] = {00f};

    int i = 0, j = 0;

    

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

    {

        for (j = 0; j < PW_CNT; j++)

        {

            printf("请输入第%d位评委对第%d位选手的评分:\n", j+1, i+1);

            scanf("%f", &score[i][j]);

            sum[i] += score[i][j];

        }

        avg[i] = sum[i]/PW_CNT;

        printf("第%d位选手的总成绩:%2f 平均成绩:%2f\n", i+1, sum[i], avg[i]);

    }

     

    return 0;

}

刚刚的回答我又改了下,这次能改选手和评委数了。

果然是两个人的提问,问题竟然一模一样

这是我上一个的回答

#include <stdioh>

void Input(float score[ ],int n)

{

int i ;

for (i = 0; i < n; i ++) {

printf("请输入第%d个裁判的分数:",i + 1);

scanf("%f",&score[i]);

}

}

float Cal_ave(float score[],int n,float max,float min)

{

float average = 00, sum = 00;

int i;

max = min = score[0];

for (i = 0; i < n; i ++) {

if (max < score[i]) {

max = score[i];

}

if (min > score[i]) {

min = score[i];

}

sum += score[i];

}

sum = sum - max - min;

average = sum / (n - 2);

return average;

}

int main(void)

{

float score[10];

float max, min, last;

Input(score, 10);

last = Cal_ave(score, 10, &max, &min);

printf("最高得分为:%2f最低得分为:%2f最终分为:%2f",max, min, last);

return 0;

}

#include<stdioh>

#include<stringh>

#include<mathh>

#define N 20//定义最多选手个数

typedef struct xuanshou

{

  char name[20];//选手姓名

  float a[10];//评委打分

  float grade;//平均分,嫌麻烦可以直接放到数组里去

}Xu;

Xu xuanshou[N];//选手数组

Xu temp;//用来调换

void init(int n)//输入函数

{

     int i,j;

  float sum,max,min;

  char c;

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

  {

      sum=0;//统计总分最后求得平均分

      max=0;min=100;

      printf("请输入第%d个选手的姓名:",i+1);

      scanf("%s",&xuanshou[i]name);

      printf("请输入10位评委的打分:");

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

      {

          scanf("%f",&xuanshou[i]a[j]);

          scanf("%c",&c);

          sum+=xuanshou[i]a[j];

          if(max<xuanshou[i]a[j])max=xuanshou[i]a[j];

          if(min>xuanshou[i]a[j])min=xuanshou[i]a[j];

          if(j==9)xuanshou[i]grade=(sum-max-min)/8;

      }

  }

  tempgrade=xuanshou[0]grade;

}

int mostequal(int j)//最公平

{

  int i,flag;//flag记录最公平的评委序号

  float cha=fabs(xuanshou[j]a[0]-xuanshou[j]grade);//作差比较

  flag=0;

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

      if(cha>fabs(xuanshou[j]a[i]-xuanshou[j]grade))

  {

      cha=fabs(xuanshou[j]a[i]-xuanshou[j]grade);

      flag=i;

  }

  return flag+1;

}

int leastequal(int j)//最不公平

{

  int i,flag;//flag记录最不公平的评委序号

  float cha=fabs(xuanshou[j]a[0]-xuanshou[j]grade);//作差比较

  flag=0;

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

      if(cha<fabs(xuanshou[j]a[i]-xuanshou[j]grade))

  {

      cha=fabs(xuanshou[j]a[i]-xuanshou[j]grade);

      flag=i;

  }

  return flag+1;

}

void paixu(int n)//对数组进行从大到小的排序

{

  int i,j,k;

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

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

      if(tempgrade<xuanshou[j]grade)

  {

      strcpy(tempname,xuanshou[i]name);

      tempgrade=xuanshou[i]grade;

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

          tempa[k]=xuanshou[i]a[k];//temp存储当前排序中要排位置的信息

      strcpy(xuanshou[i]name,xuanshou[j]name);

      xuanshou[i]grade=xuanshou[j]grade;

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

          xuanshou[i]a[k]=xuanshou[j]a[k];//将较大的移到当前要排序的位置

      strcpy(xuanshou[j]name,tempname);

      xuanshou[j]grade=tempgrade;

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

          xuanshou[j]a[k]=tempa[k];//将之前排序位置元素移至该处

  }

}

void display(int n)//显示输出函数

{

  int i;

  printf("序号\t姓名\t分数\t\t最公平评委号\t最不公平评委号\n");

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

      printf("%d\t%s\t%f\t\t%d\t\t%d\t\t\n",i+1,xuanshou[i]name,xuanshou[i]grade,mostequal(i),leastequal(i));

}

int main()

{

  int n;

  printf("          ==========青年歌手比赛分数统计==========\n");

  printf("注意:输入评委分数的时候请用空格将各分数隔开输入(例如:10 20 30 40Enter)\n\n");

  printf("请输入选手个数:");

  scanf("%d",&n);

  init(n);

  paixu(n);

  display(n);

}

以上就是关于编写一段C语言程序完成此题: 歌手大奖赛上有10个评委(放在一个数组中)打分,请设计一个通用程序,全部的内容,包括:编写一段C语言程序完成此题: 歌手大奖赛上有10个评委(放在一个数组中)打分,请设计一个通用程序,、利用C语言设计完成如下功能的程序:输入三位评委对一名选手的评分,计算其总分和平均分。、c语言题目:10名评委给一名比赛选手打分。要求用3个函数实现,3个函数的首部已部分给出.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10102783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存