通讯录按姓名和序号排序

采用自己熟悉的排序方法,编写程序完成对通讯录的按序号排序以及按联系人姓名排序的功能。

你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student{
    int num;
    char name[10];
} stu;

void input(stu a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d%s",&a[i].num,a[i].name);
    }
}
void out(stu a[],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        printf("%d %s\n",a[i].num,a[i].name);
    }
}
void sort1(stu a[],int n)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
            if(a[j].num > a[j+1].num)
            {
                stu t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
}
void sort2(stu a[],int n)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
            if(strcmp(a[j].name, a[j+1].name)>0)
            {
                stu t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
}


int main()
{
    int n;
    scanf("%d", &n);
    stu a[n];
    input(a,n);
    printf("按序号排序\n");
    sort1(a,n);
    out(a,n);
    printf("按联系人姓名排序\n");
    sort2(a,n);
    out(a,n);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img