#以下为第一次尝试代码 , 仅过第一个测试点 经过修改后的版本在此之后
#include<cstdio>
#include<math.h>
using namespace std;
#define N 100000
struct student{
int c;
int m;
int e;
int total=c+m+e;//请注意这一行
}stu;
int main(){
struct student stu[N];
int n;
scanf("%d",&n);
int i,j;
int cnt=0;
for(i=1;i<=n;i++){
scanf("%d %d %d",&stu[i].c,&stu[i].m,&stu[i].e);
}
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++){
if(abs(stu[i].c-stu[j].c)<=5){
if(abs(stu[i].m-stu[j].m)<=5){
if(abs(stu[i].e-stu[j].e)<=5){
if(abs(stu[i].total-stu[j].total)<=10){
cnt++;
}
}
}
}
}
}
printf("%d",cnt);
return 0;
}
可见 将计算部分由结构体内部放到了scanf之后, 这版代码可以ac。
#include<cstdio>
#include<math.h>
using namespace std;
#define N 100000
struct student{
int c;
int m;
int e;
int total;//删除了计算
}stu;
int main(){
struct student stu[N];
int n;
scanf("%d",&n);
int i,j;
int cnt=0;
for(i=1;i<=n;i++){
scanf("%d %d %d",&stu[i].c,&stu[i].m,&stu[i].e);
stu[i].total= stu[i].c + stu[i].m + stu[i].e ;//将计算过程放在了这里
}
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++){
if(abs(stu[i].c-stu[j].c)<=5){
if(abs(stu[i].m-stu[j].m)<=5){
if(abs(stu[i].e-stu[j].e)<=5){
if(abs(stu[i].total-stu[j].total)<=10){
cnt++;
}
}
}
}
}
}
printf("%d",cnt);
return 0;
}