五月天的天 发表于 2020-5-6 23:11:37

考研复试求助,已知如下结构体信息,利用如下结构体完成编程

struct Pair
{int key;
int value;
};
全国大学生英语风采大赛决赛选手共10位,每位选手信息由参赛编号和决赛成绩
构成。(1) 编写函数input,实现从键盘输入10位选手的编号和决赛成绩信息。(2)
编写函数sort对选手决赛成绩做降序排列。(3)编写函数top3,输出排名前三位选手
的参赛编号和成绩。 (假设没有任何选手成绩并列) (4) 编写主函数测试上述函数功能。

chxchxkkk 发表于 2020-5-7 00:48:26

用结构体数组完成,排序和一般数组元素排序一样,没什么难度

THU_LSM 发表于 2020-5-7 01:28:01

本帖最后由 THU_LSM 于 2020-5-7 01:29 编辑

#include <stdio.h>

struct Pair
{
        int key;
        int value;       
};
struct Pair pair;


void input(struct Pair *p);
void input(struct Pair *p)
{
        printf("请输入选手编号\n");
        scanf("%d",&(p->key));
        printf("请输入选手成绩\n");
        scanf("%d",&(p->value));
}

int **sort(struct Pair array[]);
int **sort(struct Pair array[])
{
        static int keys;
        static int values;
        for(int i = 0; i<10; i++)
        {
                keys = (array+i)->key;
                values = (array+i)->value;
        }
        for(int k = 0; k<9; k++)
        {
                for (int j = k+1; j<10; j++)
                {
                        if(values < values)
                        {
                                int temp;
                                temp = values;
                                values = values;
                                values= temp;
                                temp = keys;
                                keys = keys;
                                keys= temp;
                        }
                }
        }
        printf("成绩从高到低排列为:\n");
        for(int i=0; i<10; i++)
        {       
                printf("%d", values);
        }
        printf("\n");
        printf("对应选手编号为:\n");
        for(int i=0; i<10; i++)
        {       
                printf("%d", keys);
        }
        printf("\n");
       
        static int *p;
        p = values;
        p = keys;
        return p;

}
void top3(int *keys, int *values);
void top3(int *keys, int *values)
{
        for(int i=0; i<3; i++)
        {
                printf("第%d名编号为%d,分数为%d\n", i+1,*(keys+i),*(values+i));
        }
}

int main()
{
              for(int i=0; i<10; i++)
              {
                      input(&pair);
              }
              int **p = sort(pair);
              top3(*(p+1),*p);

      return 0;
}

兄弟 熬夜帮你写的

五月天的天 发表于 2020-5-7 08:48:30

THU_LSM 发表于 2020-5-7 01:28
兄弟 熬夜帮你写的

谢谢了兄弟,小弟感激不尽
页: [1]
查看完整版本: 考研复试求助,已知如下结构体信息,利用如下结构体完成编程