题目描述:
对结构体数组进行排序。 题目描述: struct Person{ int no; int age; int height; } 实现sort方法对结构体数组进行排序。 void sort(Person * array,int n); 根据no从小到大排序;如果no相同则根据age排序;如果age相同,则根据height排序。 注意: 遇到异常情况,输出"error";否则不要随意输出,会视为错误。
参考代码:
#include<stdio.h>
struct Person{
int no;
int age;
int height;
};
void sort(struct Person * array,int n)
{
if(array==NULL||n<=0)
{
printf("error");
return;
}
int ex,i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(array[j].no>array[j+1].no||(array[j].no==array[j+1].no&&array[j].age>array[j+1].age)||(array[j].no==array[j+1].no&&array[j].age==array[j+1].age&&array[j].height>array[j+1].height))
{
ex=array[j].no;
array[j].no=array[j+1].no;
array[j+1].no=ex;
ex=array[j].age;
array[j].age=array[j+1].age;
array[j+1].age=ex;
ex=array[j].height;
array[j].height=array[j+1].height;
array[j+1].height=ex;
}
}
}
return;
}
int main()
{
int n,i;
struct Person a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d %d %d",&a[i].no,&a[i].age,&a[i].height);
sort(a,n);
for(i=0;i<n;i++)
printf("%d %d %d\n",a[i].no,a[i].age,a[i].height);
return 0;
}
讲解:
结构体swap的升级版(多了个循环)。
求实求真,大气大为。