| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:C高手帮帮忙
只看楼主 加入收藏
小米呵呵
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-5-14
收藏
 问题点数:0 回复次数:1 
C高手帮帮忙
有M位选手参赛,N个评委打分,计算各位选手的最后得分是去掉一个最高分和一个最低分后进行算术平均。要求程序能输入m(<=11), n(<=7)和输入并保存每个评委对每个选手所打的分数,再计算每个选手的最后得分,然后按高分到低分顺序依次输出所有选手的成绩。
2008-05-14 11:30
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
给你!
程序代码:
#include <stdio.h>

void sort(double dinput[], int ilen);

/*main function*/
int main(void)
{
    char c;
    int m, n, i, j;
    double isum=0.0, *dperson, *iscore;
    FILE *finput;
    printf("请输入选手的人数m和评委的人数n,并以空格分隔:\n");
    scanf("%d %d", &m, &n);
    iscore=(double *)malloc(sizeof(double)*n);
    dperson=(double *)malloc(sizeof(double)*m);
    if (iscore==NULL || dperson==NULL)
    {
        printf("所需内存分配失败!\n");
        return 1;
    }
    finput=fopen("score.txt", "w");
    if (finput==NULL)
    {
        printf("文件打开失败!\n");
        return 1;
    }
    printf("选手的人数m=%d,评委的人数n=%d\n", m, n);
    for (i=0; i<m; i++)
    {
        printf("请输入对第%d位选手的评分:\n", i+1);
        fprintf(finput, "%d: ", i+1);
        for (j=0; j<n; j++)
        {
            printf("第%d位评委的评分是:\n", j+1);
            scanf("%lf", &iscore[j]);
            fprintf(finput, "%.3lf  ", iscore[j]);
            isum+=iscore[j];
        }
        sort(iscore, n);
        printf("去掉一个最低分%.3lf,去掉一个最高分%.3lf\n", iscore[0], iscore[n-1]);
        printf("%d号选手的平均成绩是%.3lf:\n", i+1, (isum-iscore[0]-iscore[n-1])/(n-2));
        fprintf(finput, "%.3lf", (isum-iscore[0]-iscore[n-1])/(n-2));
        fputs("\n", finput);
        dperson[i]=(isum-iscore[0]-iscore[n-1])/(n-2);
        isum=0.0;
    }
    printf("选手的最终成绩如下:\n");
    sort(dperson, m);
    for (i=0; i<m; i++)
    {
        printf("%.3lf  ", dperson[i]);
    }
    printf("\n");
    free(iscore);
    free(dperson);
    fclose(finput);
    return 0;
}

/*sort double function*/
void sort(double dinput[], int ilen)
{
    int i, j;
    double dtemp;
    for (i=0; i<ilen-1; i++)
    {
        for(j=0; j<ilen-1-i; j++)
        {
            if (dinput[j]>dinput[j+1])
            {
                dtemp=dinput[j];
                dinput[j]=dinput[j+1];
                dinput[j+1]=dtemp;
            }
        }
    }
}


前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-05-14 15:55
快速回复:C高手帮帮忙
数据加载中...
 
   



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

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