考研复试求助,已知如下结构体信息,利用如下结构体完成编程
struct Pair{int key;
int value;
};
全国大学生英语风采大赛决赛选手共10位,每位选手信息由参赛编号和决赛成绩
构成。(1) 编写函数input,实现从键盘输入10位选手的编号和决赛成绩信息。(2)
编写函数sort对选手决赛成绩做降序排列。(3)编写函数top3,输出排名前三位选手
的参赛编号和成绩。 (假设没有任何选手成绩并列) (4) 编写主函数测试上述函数功能。 用结构体数组完成,排序和一般数组元素排序一样,没什么难度 本帖最后由 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;
}
兄弟 熬夜帮你写的 THU_LSM 发表于 2020-5-7 01:28
兄弟 熬夜帮你写的
谢谢了兄弟,小弟感激不尽
页:
[1]