


这个是为什么,我编译的有些是正确的有些是错误的,我应该怎么修改一下
判断那里需要修改下。
修改如下:
#include <stdio.h>
#include <math.h>
int main(void){
// 因为输入时,行N从下标1开始,所以这里将数组a的行定义为1001,因为N最多1000
int N,a[1001][3],sum1, sum2, count=0;
scanf("%d", &N); // 从输入获取N的值
// 循环N次,从输入获取N名学生的三科成绩都数组a中
for(int i=1;i<=N;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
// 外层循环遍历前一个同学的下标
for(int i=1;i<=N;i++){
sum1=0;
sum2=0;
sum1+=a[i][0]+a[i][1]+a[i][2]; // 计算前一个同学的总分
// 内层循环用于遍历后一个同学的下标
int k=i+1;
while(k<=N){
sum2+=a[k][0]+a[k][1]+a[k][2]; // 计算后一个同学的总分
// https://c.biancheng.net/view/t0l4j2i.html
int ps1=abs(a[i][0]-a[k][0]); // 计算语文分差绝对值
int ps2=abs(a[i][1]-a[k][1]); // 计算数学分差绝对值
int ps3=abs(a[i][2]-a[k][2]); // 计算英文分差绝对值
int ss=abs(sum1-sum2); // 计算总分分差绝对值
// printf("第%d个学生:%d %d %d %d\n",i, a[i][0], a[i][1], a[i][2], sum1);
// printf("第%d个学生:%d %d %d %d\n",j, a[k][0], a[k][1], a[k][2], sum2);
// printf("语文分差;%d, 数学分差:%d,英语分差;%d, 总分差:%d\n", ps1, ps2, ps3, ss);
// 如果每科分差不大于5,并且总分分差不大于10,则前后两名同学是旗鼓相当的对手,计数器count+1
if(ps1<=5&&ps2<=5&&ps3<=5&&ss<=10){
count++;
//printf("count=%d\n\n", count);
}
k++;
sum2=0; // 判断完成,后面同学的总分sum2置0,方便计算下一个同学的总分
}
}
printf("%d",count);
return 0;
}
