| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3242 人关注过本帖
标题:我想设计一个歌唱大赛评分系统
只看楼主 加入收藏
幻想乡流浪者
Rank: 2
来 自:种花家
等 级:论坛游民
帖 子:27
专家分:21
注 册:2015-6-6
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:22 
我想设计一个歌唱大赛评分系统
我的思路是这样的:
第一步、定义一个二维数组grade[M][N],表示有N个裁判,M个选手;
第二部、然后写一个子函数来求每个选手的最后得分(标准和一般的比赛一致,去掉最高最低什么的);
第三部、将所有选手的最后得分写进一个新的数组中,在排序输出。
下面是我写的代码,稍微调试了一下,但是在输入分数的时候会莫名其妙的中断,希望大家能看一下,指出我的错误,谢谢。
#include<stdio.h>
#define M 3
#define N 3
int main()
{
    void maopao(float *p);
    float pingjun(float (*p)[N],int n);
    float grade[M][N];
    float zhongfen[M];
    int i,j,k;
    printf("请输入各个选手的成绩:\n");
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            scanf("%f",grade[i][j]);
        }
        for(j=0;j<M;j++)
    {
        zhongfen[j]=pingjun(grade,j);
    }
    printf("有%d个评委评分,%d个选手参赛的最后得分;\n",N,M);
}


/*冒泡排序法*/
void maopao(float *p)
{
    int i,j,k;
    for(i=0;i<M-1;i++)
        for(j=0;j<M-1-i;j++)
        {
            k=*p;
            *p=*(p+1);
            *(p+1)=k;
        }
    for(k=0;k<M;k++)
    {
        printf("%f",*(p+k));
    }
    printf("\n");
}

/*求各个选手的最后得分*/
float pingjun(float (*p)[N],int n)
{
    int i,j;
    float max,sum=0;
    max=*(*(p+n));
    for(i=0;i<N;i++)
    {
        sum+=*(*(p+n)+i);
    }
    for(i=0;i<N;i++)
    {
        if(max<*(*(p+n)+i))
        {
            max=*(*(p+n)+i);
        }
    }
    sum-=max;
    for(i=0;i<N;i++)
    {
        if(max>*(*(p+n)+i))
        {
            max=*(*(p+n)+i);
        }
    }
    sum-=max;
    sum=sum/(N-2);
    return sum;
}
搜索更多相关主题的帖子: include 
2015-06-06 21:01
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:5 
楼主大人,我有一个疑问,3个裁判,3个选手
for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            scanf("%f",grade[i][j]);
        }
而这两个for loop的意思好像是5个裁判,5个选手哎!
是不是我打开的方式不对
2015-06-06 21:10
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 2楼 hjx1120
还说自己是小白,下标越界也发现了

剑栈风樯各苦辛,别时冰雪到时春
2015-06-06 21:17
幻想乡流浪者
Rank: 2
来 自:种花家
等 级:论坛游民
帖 子:27
专家分:21
注 册:2015-6-6
收藏
得分:0 
回复 2楼 hjx1120
ORZ,我的锅,一直在改,结果把那里漏了。
2015-06-06 21:20
幻想乡流浪者
Rank: 2
来 自:种花家
等 级:论坛游民
帖 子:27
专家分:21
注 册:2015-6-6
收藏
得分:0 
回复 2楼 hjx1120
不对,改了之后还是一样的。
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-06-06 21:22
幻想乡流浪者
Rank: 2
来 自:种花家
等 级:论坛游民
帖 子:27
专家分:21
注 册:2015-6-6
收藏
得分:0 
经常出现这种问题。
2015-06-06 21:23
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 6楼 幻想乡流浪者
一个BUG一个BUG改嘛~!
冒泡算法也得改,你的主代码好像没有冒泡函数的位置哦
2015-06-06 21:43
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:5 
回复 7楼 hjx1120
我觉得。。。哎不说了
程序代码:
#include<stdio.h>
#define M 3
#define N 3
void maopao(float *p);
float pingjun(float (*p)[N],int n);
int main()
{
    
    float grade[M][N],min,max;
    float zhongfen[M];
    int i=0,j=0,k;
    printf("请输入各个选手的成绩:\n");
    for(i=0;i<M;i++){
        printf("选手%d输入成绩%d\t",i+1,1);
         scanf("%f",&grade[i][0]);
         min=max=grade[i][0];
         zhongfen[i]=grade[i][0];
        for(j=1;j<N;j++){
            printf("选手%d输入成绩%d\t",i+1,j+1);
            scanf("%f",&grade[i][j]);
            if(max<grade[i][j])max=grade[i][j];
            if(min>grade[i][j])min=grade[i][j];
            zhongfen[i]+=grade[i][j];
        }
        zhongfen[i]-=min+max;
    }
         for(i=0;i<M;i++){
             printf("第%d个选手参赛的最后得分%f\n",i+1, zhongfen[i]/(M-2));
         }
}
收到的鲜花

剑栈风樯各苦辛,别时冰雪到时春
2015-06-06 21:53
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 6楼 幻想乡流浪者
楼主大人,你把它模块化,思路就清晰了
main
{
    输入模块
    输出模块
    比较模块
    排序模块
}
你的输入模块差不多搞完了
输入模块
void input(float XXX[XXX],int XXX)
{
printf("请输入各个选手的成绩:\n");
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        {
            scanf("%f",&grade[i][j]);
        }
}


[ 本帖最后由 hjx1120 于 2015-6-6 21:55 编辑 ]
收到的鲜花
2015-06-06 21:54
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 8楼 林月儿
大神,还是你牛,我的字还没打完您的代码就来了,还能不能一个BUG,一个BUG的改了

我是笑喷了,我出去透透气,吃个夜宵什么的,哈哈~~~!哈哈哈。。
2015-06-06 22:09
快速回复:我想设计一个歌唱大赛评分系统
数据加载中...
 
   



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

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