某大学举办校园歌手大赛,邀请7个评委参与评分,评分规则是去掉一个最高分,去掉一个最低分之后的平均分做为该选手的最终得分,请设计一个程序实现选手得分
原函数
#include
<stdio.h>
int main()
{
int a[10],i,j,t,s=0;
double aver;
printf("请输入十位选手的成绩:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=1;i<9;i++)
s=s+a[i];
aver=s/8.0;
printf("%.2f\n",aver);
return 0;
}
调用函数
#include
<stdio.h>
int main()
{ void f(int x[10]);
int a[10];
printf("请输入十位选手的成绩:");
f(a);
return 0;
}
void f(int x[10])
{ int i,j,t,s=0;
double aver;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(x[i]>x[i+1])
{t=x[i];x[i]=x[i+1];x[i+1]=t;}
for(i=1;i<9;i++)
s=s+x[i];
aver=s/8.0;
printf("%.2f\n",aver);
}
该回答引用chatgpt:
#include <stdio.h>
#include <stdlib.h>
#define JUDGE_NUM 7 // 评委人数
// 从大到小排序,用于去掉最高分和最低分
int cmp(const void* a, const void* b) {
return *(int*)b - *(int*)a;
}
int main() {
int scores[JUDGE_NUM]; // 存放评委打分的数组
int i;
int sum = 0; // 存放所有评委打分的总和
int max_score, min_score; // 存放最高分和最低分
float avg_score; // 存放最终得分
// 输入每个评委的打分
printf("请输入每个评委的分数:\n");
for (i = 0; i < JUDGE_NUM; i++) {
printf("第 %d 个评委:", i+1);
scanf("%d", &scores[i]);
}
// 去掉最高分和最低分,并计算总分
max_score = scores[0];
min_score = scores[0];
for (i = 0; i < JUDGE_NUM; i++) {
if (scores[i] > max_score) {
max_score = scores[i];
}
if (scores[i] < min_score) {
min_score = scores[i];
}
sum += scores[i];
}
sum = sum - max_score - min_score;
// 计算平均分并输出
avg_score = (float)sum / (JUDGE_NUM - 2);
printf("该选手的最终得分为:%.2f\n", avg_score);
return 0;
}
这个程序首先定义了一个 JUDGE_NUM 宏来表示评委人数,然后定义了一个整型数组 scores 来存放每个评委打的分数,以及一些变量用于存放最高分、最低分和总分等信息。程序首先通过输入来获取每个评委的打分,然后去掉最高分和最低分,计算总分和平均分并输出。
这个程序的算法设计思想是,首先输入每个评委的打分,然后去掉最高分和最低分,计算剩余分数的平均值作为最终得分。这个程序的作用是计算一个选手的得分,可以应用于校园歌手大赛等评选活动。算法设计分析是指对该算法进行分析,包括时间复杂度、空间复杂度、稳定性等方面的评估。