本帖最后由 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;
}
兄弟 熬夜帮你写的 |