| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2152 人关注过本帖
标题:使用C语言但是不用数组求歌星大赛问题
只看楼主 加入收藏
宇定199711
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2017-8-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
使用C语言但是不用数组求歌星大赛问题
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
搜索更多相关主题的帖子: C语言 数组 大赛 分数 评分 
2017-12-27 21:30
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:2 
为什么不用数组,是不是用数组的已经搞定了。
2017-12-27 22:26
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:2 
不用数组就用链表,但是链表效率不如数组。

想不通为啥不用数组。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-12-27 22:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:2 
这个遍历一次就可以知道最高分最低分和平均分了吧~感觉最大差距的在最大值和最小值里面找,至于最接近的,我要看看算法原理不用数组能不能实现才行~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-12-28 00:14
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:2 
没做详细测试,老大们看看有错误么?
程序代码:
 #include<stdio.h>
// #include<math.h>
double jd(double a){
    if(a<0){
        return(-a);
    }else return(a);
}

 int main(void)

 {
     double   a[10]={0};
     double   sum=0,min=0,max=0,avg=0;
     int     i,imax,imin;
   

    for(i=0;i<10;i++){
         printf("输入评委%d的打分:\n",i+1);
         scanf("%lf",&a[i]);
         sum+=a[i];
     }

    max=min=a[0];

    for(i=0;i<9;i++){
        min=min<a[i+1]?min:a[i+1];
        max=max>a[i+1]?max:a[i+1];

    }

     avg=(sum-min-max)/8.00;
     max=min=a[0];
     for(i=0,imin=0,imax=0;i<9;i++){
         if(jd(avg-min)<=jd(avg-a[i+1])){
             //imin=i;
         }else{
             min=a[i+1];
             imin=(i+1);
         }
         if(jd(avg-max)>=jd(avg-a[i+1])){
             //imax=i;
         }else{
             max=a[i+1];
             imax=(i+1);
         }
     }
     printf("去掉最高分和最低分,平均分是:%.2lf\n",avg);

     printf("最公平的裁判是  %d号判分为:%.lf\n",imin+1,a[imin]);
     printf("最不公平的裁判是%d号判分为:%.lf\n",imax+1,a[imax]);

     return 0;

 }

2017-12-28 01:06
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
    float *a=(float *)malloc(sizeof(float)*10);
    float *p=a, sum=0;
    int i, min=0, max=0;
    for (i=0; i<10; ++i,++p)
    {
        printf("输入评委%d的打分:",i+1);
        scanf("%f", p);
        if (*p < *(a+min))
            min = i;
        else if (*p > *(a+max))
            max = i;
        sum += *p;
    }
    sum -= (*(a+max) + *(a+min));
    float ave = sum/8.0;
    int min_ave=0, max_ave=0;
    p = a+1;
    for (i=1; i<10; ++i,++p)
    {
        if (fabsf(*p-ave) < fabsf(*(a+min_ave)-ave))
            min_ave = i;
        else if (fabsf(*p-ave) > fabsf(*(a+max_ave)-ave))
            max_ave = i;
    }
    printf("去掉最高分和最低分,平均分是:%.3f\n",ave);
    if (min_ave != max_ave)
    {
        float minave = fabsf(*(a+min_ave)-ave);
        float maxave = fabsf(*(a+max_ave)-ave);
        p = a;
        for (i=0; i<10; ++i,++p)
        {
            if (fabsf(*p-ave) == minave)
                printf("最公平的裁判是 %d 号判分为:%.0f\n", i+1, *p);
            else if (fabsf(*p-ave) == maxave)
                printf("最不公平的裁判是 %d 号判分为:%.0f\n", i+1, *p);
        }
    }
    free(a);
}
2017-12-28 06:38
liaohs
Rank: 4
等 级:业余侠客
威 望:7
帖 子:61
专家分:292
注 册:2017-11-26
收藏
得分:2 
不让用数组就是想让你练习链表的使用方法。
用malloc就是动态数组,还不是链表。
2017-12-30 21:57
快速回复:使用C语言但是不用数组求歌星大赛问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027251 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved