鱼C论坛

 找回密码
 立即注册
查看: 1615|回复: 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 编辑
  1. #include <stdio.h>

  2. struct Pair
  3. {
  4.         int key;
  5.         int value;       
  6. };
  7. struct Pair pair[10];


  8. void input(struct Pair *p);
  9. void input(struct Pair *p)
  10. {
  11.         printf("请输入选手编号\n");
  12.         scanf("%d",&(p->key));
  13.         printf("请输入选手成绩\n");
  14.         scanf("%d",&(p->value));
  15. }

  16. int **sort(struct Pair array[]);
  17. int **sort(struct Pair array[])
  18. {
  19.         static int keys[10];
  20.         static int values[10];
  21.         for(int i = 0; i<10; i++)
  22.         {
  23.                 keys[i] = (array+i)->key;
  24.                 values[i] = (array+i)->value;
  25.         }
  26.         for(int k = 0; k<9; k++)
  27.         {
  28.                 for (int j = k+1; j<10; j++)
  29.                 {
  30.                         if(values[k] < values[j])
  31.                         {
  32.                                 int temp;
  33.                                 temp = values[k];
  34.                                 values[k] = values[j];
  35.                                 values[j]= temp;
  36.                                 temp = keys[k];
  37.                                 keys[k] = keys[j];
  38.                                 keys[j]= temp;
  39.                         }
  40.                 }
  41.         }
  42.         printf("成绩从高到低排列为:\n");
  43.         for(int i=0; i<10; i++)
  44.         {       
  45.                 printf("%d  ", values[i]);
  46.         }
  47.         printf("\n");
  48.         printf("对应选手编号为:\n");
  49.         for(int i=0; i<10; i++)
  50.         {       
  51.                 printf("%d  ", keys[i]);
  52.         }
  53.         printf("\n");
  54.        
  55.         static int *p[2];
  56.         p[0] = values;
  57.         p[1] = keys;
  58.         return p;

  59. }
  60. void top3(int *keys, int *values);
  61. void top3(int *keys, int *values)
  62. {
  63.         for(int i=0; i<3; i++)
  64.         {
  65.                 printf("第%d名编号为%d,分数为%d\n", i+1,*(keys+i),*(values+i));
  66.         }
  67. }

  68. int main()
  69. {
  70.               for(int i=0; i<10; i++)
  71.               {
  72.                       input(&pair[i]);
  73.               }
  74.               int **p = sort(pair);
  75.               top3(*(p+1),*p);

  76.         return 0;
  77. }
复制代码


兄弟 熬夜帮你写的
想知道小甲鱼最近在做啥?请访问 -> 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, 2024-4-27 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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