啥也没学 2021-11-09 14:39 采纳率: 66.7%
浏览 23
已结题

c语言,运行错误,各位看看


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

struct information{
        char name[200];
        int old;
        int great;
    };

int greats(struct information *pr,int n);

int main(void)
{
    int n,i,j;
    while(~scanf("%d",&n))
    {
        struct information mes[1005];
        for(i=0;i<n;i++)
            scanf("%s%d%d",&mes[i].name,&mes[i].old,&mes[i].great);
        greats(mes,n);
        for(i=0;i<n;i++)
            printf("%s %d %d\n",mes[i].name,mes[i].old,mes[i].great);
    }
    return 0;
}

int greats(struct information *pr,int n)
{
    int i,j,temp;
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(pr[i].great>pr[j].great)
            {
                temp=pr[i].great;
                pr[i].great=pr[j].great;
                pr[j].great=temp;
            }
            if(pr[i].great==pr[j].great)
            {
                int h=strcmp(pr[i].name,pr[j].name);
                char temp[100];
                if(h==1)
                {
                    strcpy(temp,pr[i].name);
                    strcpy(pr[i].name,pr[j].name);
                    strcpy(pr[j].name,temp);
                }
                if(h==0)
                {
                    if(pr[i].old>pr[j].old)
                    {
                        int temp;
                        temp=pr[i].old;
                        pr[i].old=pr[j].old;
                        pr[j].old=pr[i].old;
                    }
                }
            }
        }
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 信仰869 2021-11-09 15:01
    关注

    试一试吧

    #include<stdio.h>
    #include<string.h>
    struct information {
        char name[200];
        int old;
        int great;
    };
    int greats(struct information *pr, int n);
    int main(void)
    {
        int n, i, j;
        while (scanf("%d", &n))
        {
            struct information mes[1005];
            for (i = 0; i<n; i++)
                scanf("%s%d%d", &mes[i].name, &mes[i].old, &mes[i].great);
            greats(mes, n);
            for (i = 0; i<n; i++)
                printf("%s %d %d\n", mes[i].name, mes[i].old, mes[i].great);
        }
        return 0;
    }
    int greats(struct information *pr, int n)
    {
        int i, j;
        information    temp;
        for (i = 0; i<n-1; i++)
        {
            for (j = i + 1; j<n; j++)
            {
                if (pr[i].great>pr[j].great)
                {
                    temp = pr[i];
                    pr[i] = pr[j];
                    pr[j] = temp;
                }
                if (pr[i].great == pr[j].great)
                {
                    int h = strcmp(pr[i].name, pr[j].name);
                    //char temp[100];
                    if (h == 1)
                    {
                        temp = pr[i];
                        pr[i] = pr[j];
                        pr[j] = temp;
                    }
                    if (h == 0)
                    {
                        if (pr[i].old>pr[j].old)
                        {
                            temp = pr[i];
                            pr[i] = pr[j];
                            pr[j] = temp;
                        }
                    }
                }
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 11月9日