struct zb
{
double x;
double y;
};
void main()
{
int n,i,j,t;
double sum1,sum2,sum3;
struct zb c[1000002];
scanf("%d",&t);
for (j=0;j<t;j++)
{
sum1=sum2=sum3=0;
scanf("%d",&n);
for (i=1;i<n+1;i++)
scanf("%lf %lf",&(c[i].x),&(c[i].y));
c[n+1].x=c[1].x;
c[n+1].y=c[1].y;
for (i=1;i<n+1;i++)
{
sum1+=(c[i].x+c[i+1].x)*(c[i].x*c[i+1].y-c[i+1].x*c[i].y);
sum2+=(c[i].y+c[i+1].y)*(c[i].x*c[i+1].y-c[i+1].x*c[i].y);
sum3+=c[i].x*c[i+1].y-c[i+1].x*c[i].y;
}
c[0].x=sum1/(3*sum3);
c[0].y=sum2/(3*sum3);
printf("%.2lf %.2lf\n",c[0].x,c[0].y);
}
}程序编译通过了但执行时出错
而改成把数组变量定义成全局变量就没问题
struct zb
{
double x;
double y;
};
struct zb c[1000002];
void main()
{
int n,i,j,t;
double sum1,sum2,sum3;
scanf("%d",&t);
for (j=0;j<t;j++)
{
sum1=sum2=sum3=0;
scanf("%d",&n);
for (i=1;i<n+1;i++)
scanf("%lf %lf",&(c[i].x),&(c[i].y));
c[n+1].x=c[1].x;
c[n+1].y=c[1].y;
for (i=1;i<n+1;i++)
{
sum1+=(c[i].x+c[i+1].x)*(c[i].x*c[i+1].y-c[i+1].x*c[i].y);
sum2+=(c[i].y+c[i+1].y)*(c[i].x*c[i+1].y-c[i+1].x*c[i].y);
sum3+=c[i].x*c[i+1].y-c[i+1].x*c[i].y;
}
c[0].x=sum1/(3*sum3);
c[0].y=sum2/(3*sum3);
printf("%.2lf %.2lf\n",c[0].x,c[0].y);
}
为什么数组变量定义放在main函数里面不行?
答案:1 悬赏:80 手机版
解决时间 2021-05-09 20:12
- 提问者网友:那叫心脏的地方装的都是你
- 2021-05-09 12:37
最佳答案
- 五星知识达人网友:北城痞子
- 2021-05-09 13:10
俺没环境,不知道出什么错误提示,所以,不能确定到底是什么问题。
这种情况,大多是跟编译器有关。建议看看编译器的定义/说明。
怕麻烦的话,可以试试把数组长度改为100试试。(我主观上怀疑1000002是不是超过了编译器的要求)
这种情况,大多是跟编译器有关。建议看看编译器的定义/说明。
怕麻烦的话,可以试试把数组长度改为100试试。(我主观上怀疑1000002是不是超过了编译器的要求)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯