鱼C论坛

 找回密码
 立即注册
查看: 1956|回复: 3

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

[复制链接]
发表于 2020-5-6 23:11:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
struct Pair
{int key;
  int value;
};
全国大学生英语风采大赛决赛选手共10位,每位选手信息由参赛编号和决赛成绩
构成。(1) 编写函数input,实现从键盘输入10位选手的编号和决赛成绩信息。(2)
编写函数sort对选手决赛成绩做降序排列。(3)编写函数top3,输出排名前三位选手
的参赛编号和成绩。 (假设没有任何选手成绩并列) (4) 编写主函数测试上述函数功能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-7 00:48:26 | 显示全部楼层
用结构体数组完成,排序和一般数组元素排序一样,没什么难度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[10];


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

        return 0;
}

兄弟 熬夜帮你写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 08:48:30 | 显示全部楼层
THU_LSM 发表于 2020-5-7 01:28
兄弟 熬夜帮你写的

谢谢了兄弟,小弟感激不尽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表