| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 682 人关注过本帖
标题:歌唱比赛系统,自己编的老是有错,请求高手教一下~~~~
只看楼主 加入收藏
冷叶无声
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-20
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
歌唱比赛系统,自己编的老是有错,请求高手教一下~~~~
有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分,剩下分数的平均值作为每位选手最后的成绩。
要求:
(1)采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;
(2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;
(3)计算每位选手的最后得分,并按分数由高到低排序;
(4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;
以上功能采用菜单操作方式。
搜索更多相关主题的帖子: 姓名 裁判 结构体 平均值 
2011-06-21 15:24
冷叶无声
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-20
收藏
得分:0 
求啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2011-06-21 15:32
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:10 
你把你写的发上来

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-06-21 15:58
冷叶无声
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 3楼 vandychan
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N10
#define M10
struct compete{
    char num[10];
    char name[10];
    float score[M];
    float aver;
    int no;
}com[N];
void Input(){
    int i,j;
    for(i=0;i<N;i++){
        printf("第%d个选手的编号:",i+1);
        scanf("%s",&com[i].num);
        printf("姓名:");
        scanf("%s",&com[i].name);
        for(j=0;j<M;j++){
            printf("第%d个裁判对该生打出的数:",j++);
            do{
                scanf("%f",&com[i].score[j]);
            }while(com[i].score[j]<0);
        }
    }
    return;
}
void scan(){
    int i,j;
    float max,min,sum;
    compete temp;
    for(i=0;i<N;i++){
        sum=0;min=com[i].score[0];max=0;
        for(j=0;j<M;j++){
            sum+=com[i].score[j];
            if(max<com[i].score[j])
                max=com[i].score[j];
            if(min>com[i].score[j])
                min=com[i].score[j];
        }
        printf("max=%.2f\n",max);
        printf("min=%.2f\n",min);
        com[i].aver=(sum-max-min)/(M-2);
    }
    for(i=0;i<N-1;i++){
        for(j=i+1;j<N;j++){
            if(com[i].aver<com[j].aver{
                strcpy(temp.num,com[i].num);
                strcpy(com[i].num,com[j].num);
                strcpy(com[j].num,temp.num);
                strcpy(temp.name,com[i].name);
                strcpy(com[i].name,com[j].name);
                strcpy(com[j].name,temp.name);
                temp.aver=com[i].aver;
                com[i]aver=com[j].aver;
                com[j].aver=temp.aver;
            }
        }
    }
    for(i=0;i<N;i++)
        com[i].no=i+1;
    printf("编号\t姓名\t得分\n");
    for(i=0;i<N;i++)
        printf("%s\t%s\t%.2f\n",com[i].num,com[i].name,com[i].aver);
    return;
}
void search(){
    char num[10],name[10];int n,i;
    do{
        printf("1.按编号查找  2.按姓名查找\");
            scanf("%d",&n);
    }while(n!=1&&n!=2);
    if(n==1){
        printf("要查找的编号:");
        scanf("%s",num);
        for(i=0;i<N;i++){
            if(strcmp(num,com[i].num)==0){
                printf("编号\t姓名\t得分\t排名\n");
                printf("%s\t%s\t%.2f\t%d\n",com[i].num,com[i].name,com[i].aver,com[i].no);
                break;
            }
        }
        if(i==N)
            printf("没有你要找的选手信息!\n");
    }
    if(n==2)
        printf("要查找的姓名:");
    scanf("%s",name);
    for(i=0;i<N;i++){
            if(strcmp(name,com[i].name)==0){
                printf("编号\t姓名\t得分\t排名\n");
                printf("%s\t%s\t%.2f\t%d\n",com[i].num,com[i].name,com[i].aver,com[i].no);
                break;
            }
        }
        if(i==N)
            printf("没有你要找的选手信息!\n");
    }
    return;
}
void main(){
    int choose;
    while(1){
        do{
            printf("\t1.录入;\n\t2.浏览;\n\t3.查询;\n\t4.退出\n\t请选择功能:\n");
            scanf("%d",&choose);
        }while(choose!=1&&choose!=2&&choose!=3&&choose!=4);
        if(choose==1){
            Input();
            system("pause");
            system("cls");
        }
        else if(choose==2){
            scan();
            system("pause");
            system("cls");
        }
        else if(choose==3){
            search();
            system("pause");
            system("cls");
        }
        else{
            printf("\tGoodbey!\n\n");
            break;
        }
    }
    system("ause");
}
2011-06-23 17:36
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:10 
修改以后可以运行的代码:
细节问题自己再改。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
#define M 10
struct compete
{
    char num[10];
    char name[10];
    float score[M];
    float aver;
    int no;
}com[N];
void Input()
{
    int i,j;
    for(i=0;i<N;i++)
    {
        printf("第%d个选手的编号:",i+1);
        scanf("%s",com[i].num);///去掉&符号
        printf("姓名:");
        scanf("%s",com[i].name);///去掉&符号
        for(j=0;j<M;j++)
        {
            printf("第%d个裁判对该生打出的数:",j++);
            do{
                scanf("%f",&com[i].score[j]);
            }while(com[i].score[j]<0);
        }
    }
    return;
}
void scan()
{
    int i,j;
    float max,min,sum;
    struct compete temp;//加上struct
    for(i=0;i<N;i++)
    {
        sum=0;min=com[i].score[0];max=0;
        for(j=0;j<M;j++)
        {
            sum+=com[i].score[j];
            if(max<com[i].score[j])
                max=com[i].score[j];
            if(min>com[i].score[j])
                min=com[i].score[j];
        }
        printf("max=%.2f\n",max);
        printf("min=%.2f\n",min);
        com[i].aver=(sum-max-min)/(M-2);
    }
    for(i=0;i<N-1;i++)
    {
        for(j=i+1;j<N;j++)
        {
            if(com[i].aver<com[j].aver)//少一个右括号
            {
                strcpy(temp.num,com[i].num);
                strcpy(com[i].num,com[j].num);
                strcpy(com[j].num,temp.num);
                strcpy(temp.name,com[i].name);
                strcpy(com[i].name,com[j].name);
                strcpy(com[j].name,temp.name);
                temp.aver=com[i].aver;
                com[i].aver=com[j].aver;
                com[j].aver=temp.aver;
            }
        }
    }
    for(i=0;i<N;i++)
        com[i].no=i+1;
    printf("编号\t姓名\t得分\n");
    for(i=0;i<N;i++)
        printf("%s\t%s\t%.2f\n",com[i].num,com[i].name,com[i].aver);
    return;
}
void search(){
    char num[10],name[10];int n,i;
    do
    {
        printf("1.按编号查找  2.按姓名查找\n");
        scanf("%d",&n);
    }
    while(n!=1&&n!=2);
    if(n==1){
        printf("要查找的编号:");
        scanf("%s",num);
        for(i=0;i<N;i++){
            if(strcmp(num,com[i].num)==0){
                printf("编号\t姓名\t得分\t排名\n");
                printf("%s\t%s\t%.2f\t%d\n",com[i].num,com[i].name,com[i].aver,com[i].no);
                break;
            }
        }
        if(i==N)
            printf("没有你要找的选手信息!\n");
    }
    if(n==2)
        printf("要查找的姓名:");
    scanf("%s",name);
    for(i=0;i<N;i++)
    {
            if(strcmp(name,com[i].name)==0)
            {
                printf("编号\t姓名\t得分\t排名\n");
                printf("%s\t%s\t%.2f\t%d\n",com[i].num,com[i].name,com[i].aver,com[i].no);
                break;
            }
    }
    if(i==N)
        printf("没有你要找的选手信息!\n");
    return;
}
void main(){
    int choose;
    while(1){
        do{
            printf("\t1.录入;\n\t2.浏览;\n\t3.查询;\n\t4.退出\n\t请选择功能:\n");
            scanf("%d",&choose);
        }while(choose!=1&&choose!=2&&choose!=3&&choose!=4);
        if(choose==1){
            Input();
            system("pause");
            system("cls");
        }
        else if(choose==2){
            scan();
            system("pause");
            system("cls");
        }
        else if(choose==3){
            search();
            system("pause");
            system("cls");
        }
        else{
            printf("\tGoodbey!\n\n");
            break;
        }
    }
    system("ause");
}


********多贴代码,少说空话*******
2011-06-25 19:29
快速回复:歌唱比赛系统,自己编的老是有错,请求高手教一下~~~~
数据加载中...
 
   



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

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