求大神解答C语言编程 5

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。同时对评委评分进行... 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。同时对评委评分进行裁判,即在10个评委中找出最公平(即为最接近平均分)和最不公平(即与平均分的差距最大)的评委。 展开
 我来答
黔丶老吕
2021-05-29 · TA获得超过339个赞
知道小有建树答主
回答量:366
采纳率:66%
帮助的人:34.9万
展开全部
#include <stdio.h>
#include <stdlib.h>

//定义一个结构体保存裁判id和分数
typedef struct{
unsigned char judegId;//裁判ID
unsigned char judegScore;//裁判给的分数
}judge;

int main()
{
judge jg[10];
int i;
int score;
for(i = 0;i < 10;i++)
{
printf("请输入裁判%d打的分数\n",i+1);
scanf("%d",&score);
getchar();
if(score <= 0 || score > 100)
{
printf("输入分数无效,重新输入,分数要求1-100!\n");
printf("请输入裁判%d打的分数\n",i+1);
scanf("%d",&score);
getchar();
if(score <= 0 || score > 100)
{
printf("无效输入,程序退出!\n");
return -1;
}
}
jg[i].judegId = i;
jg[i].judegScore = score;
}

//对数组从分数低到分数高排序
for(i = 0;i < 9;i++)
{
if(jg[i].judegScore > jg[i+1].judegScore)
{
unsigned char tmpId = jg[i].judegId;
unsigned char tmpScore = jg[i].judegScore;
jg[i].judegId = jg[i+1].judegId;
jg[i].judegScore = jg[i+1].judegScore;
jg[i+1].judegScore = tmpScore;
jg[i+1].judegId = tmpId;
}
}
//打印所有得分
printf("选手得分为:\n");
for(i = 0;i < 10;i++)
{
printf("%d ",jg[i].judegScore);
}
printf("\n");

//计算评价得分
unsigned short sum = 0;
for(i = 1;i < 9;i++)
{
sum+=jg[i].judegScore;
}
unsigned char average = sum/8;
printf("去掉最高分%d,最低分%d,评价得分为%d分\n",jg[9].judegScore,jg[0].judegScore,average);

unsigned char fairIndex0 = 0;
unsigned char unfairIndex = 0;
//查找与平均值差距最小的
for(i = 1;i < 10;i++)
{
//abs为求绝对值函数
if(abs(jg[i].judegScore-average) < abs(jg[fairIndex].judegScore-average))
{
fairIndex = i;
}
}
printf("最公平的教练是%d,打分为%d\n",jg[fairIndex].judegId,jg[fairIndex].judegScore);

//查找与平均分差距最大的
for(i = 1;i < 10;i++)
{
if(abs(jg[i].judegScore-average) > abs(jg[unfairIndex].judegScore-average))
{
unfairIndex = i;
}
}
printf("最不公平的教练是%d,打分为%d\n",jg[unfairIndex].judegId,jg[unfairIndex].judegScore);
return 0;
}

//留一个问题给你,可能有两个裁判是最公平或者最不公平的,这个自己想想怎么做
追问
[Error] 'fairIndex' was not declared in this scope
追答
unsigned char fairIndex0 = 0;这个地方定义的时候后面多按了个0,去掉就行了
itunes0004
2021-05-31 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:516万
展开全部
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, jg[10], score;
for(i = 0;i < 10;i++) {
while(1){
printf("请输入裁判%d打的分数\n",i+1);
scanf("%d",&score);
if(score > 0 && score < 101) break;
printf("输入分数无效,重新输入,分数要求1-100!\n");
}
jg[i] = score;
}
//打印所有得分
printf("选手得分为:\n");
for(i = 0;i < 10;i++) {
printf("%d ",jg[i]);
}

int max_id = 0, min_id = 0, sum = 0;
for(i = 0;i < 10;i++) {
sum += jg[i];
if(jg[i] > jg[max_id]) max_id = i;
if(jg[i] < jg[min_id]) min_id = i;
}
sum -= jg[max_id] + jg[min_id];
float avg = sum/8.0;
printf("去掉最高分%d,最低分%d,评价得分为%f分\n",jg[max_id],jg[min_id],avg);

int fair_id = 0, unfair_id = 0;
for(i = 0;i < 10;i++) {
if(abs(avg - jg[i]) < abs(avg - jg[fair_id])) fair_id = i;
if(abs(avg - jg[i]) > abs(avg - jg[unfair_id])) unfair_id = i;
}
printf("最公平的教练是%d,打分为%d\n",jg[fair_id],jg[fair_id]);
printf("最不公平的教练是%d,打分为%d\n",jg[unfair_id],jg[unfair_id]);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式