求这个问题的完整代码。

【问题描述】设有n个人的姓名和年龄存在数组中,输出这些人年龄居中的年龄,和同年龄的所有人姓名(如多人,姓名按字母顺序排序),如偶数算中间两人平均值,没有相同年龄则输出error。
【输入形式】人数 姓名 年龄
【输出形式】年龄 姓名
【样例输入】
5
Ewry 32
Jdkfg 54
Dfhsj 20
Kvirk 32
Sgkf 53 
 
【样例输出】32 Ewry Kvirk

定义数组,排序,得到中间年龄。再按年龄比较输出该年龄的人

#include <stdio.h>
#include <string.h>
typedef struct _person
{
    char name[20];
    int age;
}person;

int main()
{
    int n,mid;
    person p[100];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%s %d",p[i].name,&p[i].age);
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
        {
            if(p[j].age > p[j+1].age)
            {
                person t = p[j];
                p[j] = p[j+1];
                p[j+1] = t;
            }
            else if(p[j].age == p[j+1].age && strcmp(p[j].name,p[j+1].name) > 0)
            {
                person t = p[j];
                p[j] = p[j+1];
                p[j+1] = t;
            }
        }
    if(n%2==0)
        mid = (p[n/2-1].age+p[n/2].age)/2;
    else
        mid = p[n/2].age;
    int count = 0;
    for(int i=0;i<n;i++)
    {
        if(p[i].age == mid)
        {
            if(count == 0)
                printf("%d %s",p[i].age,p[i].name);
            else 
                printf(" %s",p[i].name);
            count++;
        }
    }
    if(count==0)
        printf("error");
    return 0;
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632