#include "stdioh"
void main()
{
int i,Max=-1,Min=999,Score,x,y;
double Sum=0,a[10],Max2=-1,Min2=999,z;
printf("练习30题_6:歌星比赛评分:\n");
for(i=1;i<=10;i++)
{
printf("第%d位评委打分:\n",i);
scanf("%d",&Score);
a[i]=Score;
Sum+=Score;
if(Score>Max)Max=Score;
if(Score<Min)Min=Score;
}
printf("%s%d\n%s%d\n%s%f\n","去掉一个最高分",Max,"去掉一个最低分",Min,"得出的分数为:",(Sum-Min-Max)/8);
z=(Sum-Min-Max)/8;
for(i=1;i<=10;i++)
{
if(a[i]-z>0)//等于0就是差距最小的了所以不用在max上
if(a[i]-z>Max2)
{
Max2=a[i]-z;
x=i;
}
else if (z-a[i]>0)
if(z-a[i]>Max2)
{
Max2=z-a[i];
x=i;
}
if(a[i]-z>=0)
if(a[i]-z<Min2)
{
Min2=a[i]-z;
y=i;
}
else if (z-a[i]>=0)
if(z-a[i]<Min2)
{
Min2=z-a[i];
y=i;
}
}
printf("思维延伸:最公平的裁判是:第%d位。\n最不公平的裁判是:第%d位。\n",y,x);//以上代码没写并列情况
}
#define AMOUNT 10 /裁判数量/
int main(void)
{
float score[AMOUNT];
float sum=0,avg=0;
int i=0;
for(i;i<10;i++)
{
scanf("%f",&score[i]);
sum+=score[i];
}
float min=score[0],max=score[0];
for(i=1;i<10;i++)
{
if(min>score[i]) min=score[i];
if(max<score[i]) max=score[i];
}
sum=sum-min-max;
avg=sum/AMOUNT;//2个裁判不计算在内的话就是AMOUNT-2
printf("各位裁判的分数:\n");
for(i=0;i<10;i++)
printf("%2f ",score[i]);
printf("\n去掉一个最高分%2f,去掉一个最低分%2f,最后总分为%2f,平均分%2f\n",max,min,sum,avg);
return 0;
}
算法可以这样来想:
1申请一个数组Team[8];
2A队有7场比赛(额是循环赛吗),输入每场的比赛结果(可以假设胜为1,负为-1)
3读入数据,用一个选择或是if语句来判断,是1则Team[0]+=3,是0则不做 *** 作
4依3之例,依次读入余下6场比赛的结果并处理
5依(2,3,4)之例,处理余下7只队伍的比赛结果
6为数组Team排序,输出结果
题主你好,给你个思路吧:
1、我们假设每个人有姓名和分数的属性。如果简单的只是名字,那就省事儿了反而,这里按照复杂的,定义链表PlayerList,结构体中应该包括名字,分数和next指针
2、定义两个链表,一个来存储比赛者(也可以确定数量的数组也是ok的),一个来存淘汰的人
PlayerList playList=(PlayerList )malloc(sizeof(Player));
PlayerList revivalList=(PlayerList )malloc(sizeof(Player));
3、每有一个人,往playList链表中加入一人,复活列表一开始是空的。
4、运行题主的比赛逻辑,为每个人做打分
5、对人链表中遍历每个元素,如果分数小于80,从原链表删除,并将删除元素加入到revivalList中
6、对revivalList的每个元素执行再次执行比赛的逻辑,因为也可能奇数,也要考虑是循环赛还是有轮空的淘汰之类的。
以上就是关于用C语言编写一个歌唱比赛成绩统计程序全部的内容,包括:用C语言编写一个歌唱比赛成绩统计程序、C语言编程:比赛报分规则,即去掉最高分,最低分,取平均分。、急!!!看过来:要求用C语言编程实现一个足球比赛问题!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)