#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;
}

输出总是不对是什么原因?
- 调整一下 cat 结构体数组 的位置,如下图所示:

#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;
}