c - 为什么我的代码出现运行时错误?

标签 c runtime

我花了 3 个小时才找到解决问题的逻辑并编写相应的代码。但现在我是

出现此运行时错误。谁能帮助我知道我犯了什么错误? 编辑:它现在正在运行,但不打印任何内容。

http://ideone.com/2YlS9J

#include <stdio.h>
#include<math.h>

float distance(float n1,float m1,float n2,float m2){
   float d=0;float sum=0;
   d =sqrt(pow(m2-m1,2)+pow(n2-n1,2));
   sum+=d;
   printf("%.2f",sum);
   return sum;
}

int main(void) {
   int t,n,i,j;float sum=0;
   scanf("%d",&t);
   while(t--){
      scanf("%d",&n);
      int r=0,s=0,a=0,b=0;
      int x[n],y[n],p[n],q[n],min[n],max[n];
      for(i=0;i<n;i++){
         scanf("%d %d",&x[i],&y[i]);}

      for(j=0;j<10001;j++){
         for(i=0;i<n;i++){
            if(j==x[i]){
               p[r++]=x[i];q[s++]=y[i];
            }
         }}
         for(i=0,j=i+1;i<n,j<n;i++,j++){
            if(p[i]==p[j]){
               if(q[i]>q[j]){min[a++]=p[i]; max[b++]=q[i];}
               else{min[a++]=p[i]; max[b++]=q[j];}
            }
            else{min[a++]=p[i]; max[b++]=q[i];}
         }

      for(i=0;i<n;i++){
         distance(min[i],max[i],min[i+1],max[i+1]);
      }

   }
}

最佳答案

正如 @YePhicK 所说,我会强调,学习使用调试器。 不要依赖猜测或仅仅依靠目测。

也就是说,我看到一些东西,除非你真的知道自己在做什么,否则肯定会崩溃。

您有一个使用 j 作为索引变量的循环。 然后在其中,您有另一个循环,它也使用 j 作为索引变量。

      for(j=0;j<10001;j++){  // <----- j used here
         for(i=0;i<n;i++){
            if(j==x[i]){
               p[r++]=x[i];q[s++]=y[i];
            }
         }
         for(i=0,j=i+1;i<n,j<n;i++,j++){  // <----- j used here
            if(p[i]==p[j]){
               if(q[i]>q[j]){min[a++]=p[i]; max[a++]=q[i];}
               else{min[a++]=p[i]; max[a++]=q[j];}
            }
            else{min[a++]=p[i]; max[a++]=q[i];}
         }
      }

此外,您正在使用名为 minmax 的数组。 有一些普遍接受的宏,称为 minmax,因此,如果您重新定义这些宏,则会面临名称冲突的风险。

另外,在这样的代码中

{
  min[a++]=p[i];
  max[a++]=q[i];
}

看起来您通过将 a 递增两次来将空格放入数组 minmax 中。

关于c - 为什么我的代码出现运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462653/

相关文章:

c - 无法通过linux串口读取

C - 类型不匹配

c++ - C++ 中的运行时接口(interface)和对象组合

c - 任何操作系统如何限制运行时代码修改?

GCC 中的 C 函数对齐

c - 设置字符串为 NULL

entity-framework - 在运行时更改架构名称-Entity Framework

c - C 中的数组、字符串、指针操作

java - 尝试将 FXML 文件加载到定制的 JavaFX Game 类(由教授制作)

c++ - 时间优化 C++ 函数以找到解码可能性的数量