| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1081 人关注过本帖
标题:请大佬帮我把这个C++改成基础的C语言,因为我没学那么多东西,感激不尽!
取消只看楼主 加入收藏
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
请大佬帮我把这个C++改成基础的C语言,因为我没学那么多东西,感激不尽!
#include<stdio.h>
#include<string.h>
#define N 10//定义最多选手个数

typedef struct xuanshou
{
    char bianhao[20];//选手编号
    char name[20];//选手姓名
    float a[10];//评委打分
    float grade;//平均分,嫌麻烦可以直接放到数组里去
}Xu;

Xu xuanshou[N];//选手数组
Xu temp;//用来调换

void init()//输入函数
{
       int i,j;
    float sum,max,min;
    char c;
    for(i=0;i<N;i++)
    {
        sum=0;//统计总分最后求得平均分
        max=0;min=100;
        printf("请输入第%d个选手的姓名:",i+1);
        scanf("%s",&xuanshou[i].name);
        printf("请输入10位评委的打分:");
        for(j=0;j<10;j++)
        {
            scanf("%f",&xuanshou[i].a[j]);
            scanf("%c",&c);
            sum+=xuanshou[i].a[j];
            if(max<xuanshou[i].a[j])max=xuanshou[i].a[j];
            if(min>xuanshou[i].a[j])min=xuanshou[i].a[j];
            if(j==9)xuanshou[i].grade=(sum-max-min)/8;
        }
    }
    temp.grade=xuanshou[0].grade;
}

void paixu()//对数组进行从大到小的排序
{
    int i,j,k;
    for(i=0;i<N;i++)
        for(j=i+1;j<10;j++)
        if(temp.grade<xuanshou[j].grade)
    {
        strcpy(temp.name,xuanshou[i].name);
        temp.grade=xuanshou[i].grade;
        for(k=0;k<10;k++)
            temp.a[k]=xuanshou[i].a[k];//temp存储当前排序中要排位置的信息
        strcpy(xuanshou[i].name,xuanshou[j].name);
        xuanshou[i].grade=xuanshou[j].grade;
        for(k=0;k<10;k++)
            xuanshou[i].a[k]=xuanshou[j].a[k];//将较大的移到当前要排序的位置
        strcpy(xuanshou[j].name,temp.name);
        xuanshou[j].grade=temp.grade;
        for(k=0;k<10;k++)
            xuanshou[j].a[k]=temp.a[k];//将之前排序位置元素移至该处
    }
}

void chazhao()
{
    char s[20];
    int i;
    printf("请输入选手编号或姓名:");
    scanf("%s",s);
    for(i=0;i<N;i++)
        if(strcmp(xuanshou[i].bianhao,s)==0||strcmp(xuanshou[i].name,s)==0)
        {
            printf("选手分数为:%d  排名为:%d",xuanshou[i].grade,i+1);
            break;
        }
}
void display()//显示输出函数
{
    int i;
    printf("名次\t编号\t姓名\t分数\n");
    for(i=0;i<N;i++)
        printf("%d\t%s\t%s\t%f\n",i+1,xuanshou[i].bianhao,xuanshou[i].name,xuanshou[i].grade);
}

int main()
{
    int n;
    printf("              ===========歌手比赛==========\n");
    printf("操作:(退出请直接关闭窗口)\n1.输入信息\n2.排序输出名次\n3.查找选手\n");
    while(1)
        {
            printf("选择:");
            scanf("%d",&n);
            switch(n)
                {
                    case 1:
                    {
                        printf("请输入选手信息\n");
                        printf("注意:输入评委分数的时候请用空格将各分数隔开输入(例如:10 20 30 40Enter)\n");
                        init();
                        paixu();
                    }break;
                    case 2:display();
                    case 3:chazhao();
                }
    }
}
搜索更多相关主题的帖子: include C语言 统计 姓名 
2017-06-12 15:46
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
收藏
得分:0 
回复 2楼 wp231957
因为有些我没学过...
2017-06-12 17:03
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
收藏
得分:0 
回复 5楼 renkejun1942
好吧 谢谢   这个是纯C  但是好像有点问题 麻烦大佬看一下  我输入了编号 姓名  以及十个评分 可是后来按回车出不了结果
2017-06-14 09:11
快速回复:请大佬帮我把这个C++改成基础的C语言,因为我没学那么多东西,感激不尽 ...
数据加载中...
 
   



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

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