你这个可以用冒泡排序,(这是比较简单的排序),至于名字,你可以参考一下东方博宜的1314题
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char name[10];
int score;
} stu;
//快速排序
void quick_sort(stu num[], int low, int high )
{
int i,j;
stu tmp,temp;
i = low;
j = high;
tmp = num[low]; //任命为中间分界线,左边比他小,右边比他大,通常第一个元素是基准数
if(i > j) //如果下标i大于下标j,函数结束运行
{
return;
}
while(i != j)
{
while(num[j].score <= tmp.score && j > i)
{
j--;
}
while(num[i].score >= tmp.score && j > i)
{
i++;
}
if(j > i)
{
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
num[low] = num[i];
num[i] = tmp;
quick_sort(num,low,i-1);
quick_sort(num,i+1,high);
}
int main()
{
int i, n;
printf("人数:");
scanf("%d", &n);
stu a[n];
for (i = 0; i < n; i++)
{
printf("姓名:");
scanf("%s", a[i].name);
printf("成绩:");
scanf("%d", &a[i].score);
}
quick_sort(a, 0, n - 1); //调用快排函数,将a排序
for (i = 0; i < n; i++)
{
printf("%11s", a[i].name);
}
printf("\n");
for (i = 0; i < n; i++)
{
printf("%11d", a[i].score);
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!