标题:请大佬帮我把这个C++改成基础的C语言,因为我没学那么多东西,感激不尽!
只看楼主
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
结帖率:0
已结贴  问题点数:20 回复次数:5 
请大佬帮我把这个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
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
你根据啥说这是C++代码呢

DO IT YOURSELF !
2017-06-12 15:52
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
得分:0 
回复 2楼 wp231957
因为有些我没学过...
2017-06-12 17:03
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
你没学过 它也是纯C代码

DO IT YOURSELF !
2017-06-12 17:13
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:10 
回复 3楼 zl451794545
原来你是这样判断语言的啊。

那你学过英语吗?如果没有的话,你的世界真简单,这个世界上就存在两种语言,汉语和英语。


用的都是一些很基础的函数,怎么修改?!

[此贴子已经被作者于2017-6-12 18:37编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-12 17:48
zl451794545
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-6-12
得分:0 
回复 5楼 renkejun1942
好吧 谢谢   这个是纯C  但是好像有点问题 麻烦大佬看一下  我输入了编号 姓名  以及十个评分 可是后来按回车出不了结果
2017-06-14 09:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477850-1-1.html




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

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