|  | 
 
| 
P5728 【深基5.例5】旗鼓相当的对手:现有 N(N≤1000)N(N\le 1000)N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 
 
 
 我想了好久都没搞懂我哪里错了呀,大神们帮忙看看吧
   
 
 
 
 
 
 #include<stdio.h>
 #include<math.h>
 int main()
 {int n,g;
 scanf("%d",&n);
 int a[n][3];
 for(int i=0;i<n;i++)
 {
 scanf("%d",&a[i][0]);
 scanf("%d",&a[i][1]);
 scanf("&d",&a[i][2]);
 }
 for(int i=0;i<n;i++)
 {for(int d=i+1;d<n;d++)
 {
 int x= fabs(a[i][0]-a[d][0]);
 int y= fabs(a[i][1]-a[d][1]);
 int z= fabs(a[i][2]-a[d][2]);
 int o= fabs( (a[i][0]+a[i][1]+a[i][2])-(a[d][0]+a[d][1]+a[d][2]) );
 if(x<=5&&y<=5&&z<=5&&o<=10)
 {
 g+=1;
 }
 }
 }
 printf("%d",g);
 return 0;
 }
 
 本帖最后由 风过无痕1989 于 2020-11-27 21:45 编辑 
 下列写法错误:
 scanf("&d",&a[2]);           // 正确的是:scanf("%d",&a[2]);
 
 int x = fabs(a[0] - a[d][0]);
 int y = fabs(a[1] - a[d][1]);
 int z = fabs(a[2] - a[d][2]);
 int o = fabs((a[0] + a[1] + a[2]) - (a[d][0] + a[d][1] + a[d][2]));
 
 fabs() 的类型是 double 型,它是 无法将参数 1 从“int [n][3]”转换为“double” 的,对他们进行修改,程序即可运行
 
 另外,你得先搞清楚,你的编译器是否支持变长数组(我的 VS2015 就不支持),若支持则没事,若不支持,int a[n][3]; 这一语句也得改
 
 | 
 |