无法找到错误请帮助,这是一个C代码,用于在坐标平面上找到最小数量的四边形
#include <stdio.h>
int quadrangle(int *,int);
int min(int,int);
int main(){
int t,i,j,n,p[n][n];
printf("\nEnter the number of test cases");
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&n);
for(j=0;j<n;j++){
scanf("%d %d",&p[j][0],&p[j][1]);
}
printf("%d",quadrangle(&p[0][0],n));
}
return 0;
}
int quadrangle(int *p,int len){
int f=0,s=0,t=0,fo=0,i;
for(i=0;i<len;i++){
if(*(p+i*len)>0&&*(p+i*len+1)>0)
f++;
if(*(p+i*len)>0&&*(p+i*len+1)<0)
s++;
if(*(p+i*len)<0&&*(p+i*len+1)<0)
t++;
if(*(p+i*len)<0&&*(p+i*len+1)>0)
fo++;
}
return min(min(f,s),min(t,fo));
}
int min(int a,int b){
if(a>b) return b;
else return a;}
我在codeblocks软件上测试它正在编译好但在我执行它时突然结束。控件甚至不输入main()。
答案 0 :(得分:1)
n
未初始化,您在此处创建了一个大小为n
的数组(猜测n
的值是什么):
int t,i,j,n,p[n][n];
n
初始化后声明数组,即更改
int t,i,j,n,p[n][n];
到
int t,i,j,n;
并添加
int p[n][n];
后
scanf("%d",&n);