建立一个通讯录的结构记录,包括姓名、生日、电话号码。 输入n(n<=20)个朋友的信息,再按他们的年龄从大到小的顺序依次输出其信息


#include
struct friend
{
    char name[10],num[20];
    int birthday;
};
int main()
{
    int i,n,j,t;
    struct friend a[20];
    printf("Input n:");
    scanf("%d",&n);
    for(i=0;iprintf("Input the name,birthday,number of the %d friend:",i+1);
    scanf("%s%d%s",a[i].name,&a[i].birthday,a[i].num);
    for(i=1;ifor(j=0;j-1;j++)
        if(a[j].birthday1].dirthday)
    {
        t=a[j];
        a[j]=a[j+1];
        a[j+1]=t;
    }
    for(i=0;iprintf("%s%d%s",a[i].name,&a[i].birthday,a[i].num);
    return 0;
}

全是错误,我不知道怎么改了

friend是c++的关键字,因此将结构体类型命名为friend是不合法的,后面的功能已帮你完善。


#include<stdio.h>
struct friends
{
    char name[10];
    char num[20];
    int birthday;
};
int main()
{
    int i,n,j;
    struct friends man[20];
    struct friends temp;
    printf("Input n:\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("Input the name,birthday,number of the %d friend:\n",i+1);
        scanf("%s %d %s",man[i].name,&man[i].birthday,man[i].num);
    }
   //冒泡排序 
    for (i = 1; i <= n-1; i++)
    {
        for (j = 0; j <= n - i-1; j++)
        {
            if (man[j].birthday < man[j+1].birthday)
            {
                temp = man[j];
                man[j] = man[j + 1];
                man[j + 1] = temp;
            }
        }
    }
    for(i=0;i<n;i++)
        printf("第%d个:姓名:%s 生日:%d 电话:%s\n",i+1,man[i].name,man[i].birthday,man[i].num);
    return 0;
}