c语言排序问题,急

来源:百度知道 编辑:UC知道 时间:2024/06/06 18:54:17
c程序中定义了sprintf(outbuf[i],"%s%d", name, num);程序每次向outbuf输入一行数据,存到outbuf缓存中,然后输出格式为:
name num
a 5
b 3
c 6
d 10
e 9
现在需要按照num列递减排序,即:
name num
d 10
e 9
c 6
a 5
b 3
那么如何实现呢?比较着急,谢谢!
可以具体点么?我刚接触c语言。。。
如果现在outbuf已经放到一个struct里了,比如:htl->n+=sprintf(htl->out+htl->n," %s\r", outbuf[n]);那么该如何排序呢?outbuf[n]应该是包括name和num的一行了,怎么能剔出num进行排序呢?谢谢!

把outbuf的数据再读出来放到struct里,然后对那个num字段进行排序,选择冒泡都可以

#include<stdio.h>
struct person
{
char name[10];
int num;
}person[5];
void main()
{
void sort(int a[],int n);
int i;
for(i=0;i<5;i++)
scanf("%s%d",person[i].name,&person[i].num);
for(i=0;i<5;i++)
sort(person[i].num);
for(i=0;i<5;i++)
printf("%s%d",person[i].name,person[i].num);
}
void sort(int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}