我应该编写一个程序来对结构数组进行排序,但我不知道该怎么做

I should make a program to sort struct array but I don't have any idea to do this

编辑后


代码是:


#include <stdio.h>
#include <string.h>

struct names//defining struct array with leinght of (3) 
{
char firstname[50];
char lastname[50];
int age;
}n[4];

void show(struct names n[],int);//print the struct elements on the screen
void sortbyage(struct names n[],int);//sort the struct elements by age

int main(void)
{
    struct names n[4];
    int len=3;

    strcpy(n[0].firstname,"david");
    strcpy(n[0].lastname,"bekham");
    n[0].age=18;
    strcpy(n[1].firstname,"cristiano");
    strcpy(n[1].lastname,"ronaldo");
    n[1].age=20;
    strcpy(n[2].firstname,"iron");
    strcpy(n[2].lastname,"man");
    n[2].age=16;
    show(n,len);
    sortbyage(n,len);
    show(n,len);

    return 0;
}
void show(struct names n[],int len)
{
    for(int i=0;i<3;i++)
    {
        printf("%d-first name ==>%s\n",i+1,n[i].firstname);
        printf("%d-last name ==>%s\n",i+1,n[i].lastname);
        printf("%d-age==>%i\n",i+1,n[i].age);
    }
}
void sortbyage(struct names n[],int len)
{
   // int help=0;
    for(int i=len-1;i>0;i--)
    {
        for(int j=0;j<i;j++)
        {
            if(n[j].age>n[j+1].age)
            {
                n[4]=n[j];
                n[j]=n[j+1];
                n[j+1]=n[4];
            }
        }
    }

}

编辑后有效


注意:在 运行 时间里,它在最后一行中键入此消息:* 进程返回 -1073741819 *)) 我该如何解决此问题并执行此操作大问题还是无关紧要???

您需要访问如下。请修改您的代码如下

if(n[j].age > n[j+1].age)

希望对您有所帮助。

编辑: 请按如下方式修改 sortbyage() 函数,它工作正常。

void sortbyage(struct names n[],int len)
{
    struct names temp;
    for(int i=0;i<len;i++)
    {
        for(int j=i+1;j<len;j++)
        {
            if(n[i].age > n[j].age)
            {
                temp = n[i];
                n[i] = n[j];
                n[j] = temp;
            }
        }
    }
}

编辑:

if(n[j].age>n[j+1].age)
{
    help=n[j].age;
    n[j].age=n[j+1].age;
    n[j+1].age=help;
}