关于#c语言#的问题,如何解决?


#include 
typedef struct cat
{
    char name[25];
    int lik1,lik2,lik3;
}cat;
int main()
{
    cat c[100000];
    int n,t,sum1,sum2,sum3;
    scanf("%d",&n);
    for(int i=0;i"%s %d %d %d",c[i].name,&c[i].lik1,&c[i].lik2,&c[i].lik3);
    }
    for(int i=0;i-1;i++)
    {
            for(int j=i+1;j=20&&sum2>=20&&sum3>=20&&sum1+sum2+sum3>=50)
                    printf("%s %s\n",c[i].name,c[j].name);
                }
    }
    return 0;
}

img


输出总是不对是什么原因?

  • 调整一下 cat 结构体数组 的位置,如下图所示:

img

#include <stdio.h>
typedef struct cat
{
    char name[25];
    int lik1,lik2,lik3;
}cat;
int main()
{
    
    int n,t,sum1,sum2,sum3;
    scanf("%d",&n);
    cat c[n];
    for(int i=0;i<n;i++)
    {
        scanf("%s %d %d %d",c[i].name,&c[i].lik1,&c[i].lik2,&c[i].lik3);
    }
    for(int i=0;i<n-1;i++)
    {
            for(int j=i+1;j<n;j++)
            {
                if(c[i].lik1<c[j].lik1)
                {
                    t=c[i].lik1;
                    c[i].lik1=c[j].lik1;
                    c[j].lik1=t;
                }
                sum1=c[i].lik1-c[j].lik1;
                if(c[i].lik2<c[j].lik2)
                {
                    t=c[i].lik2;
                    c[i].lik2=c[j].lik2;
                    c[j].lik2=t;
                }
                sum2=c[i].lik2-c[j].lik2;
                if(c[i].lik3<c[j].lik3)
                {
                    t=c[i].lik3;
                    c[i].lik3=c[j].lik3;
                    c[j].lik3=t;
                }
                sum3=c[i].lik3-c[j].lik3;
                if(sum1>=20&&sum2>=20&&sum3>=20&&sum1+sum2+sum3>=50)
                    printf("%s %s\n",c[i].name,c[j].name);
                }
    }
    return 0;
}