数组越界的问题

猫熊学习 猫熊学习 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


#include <stdio.h>

#include <math.h>
#define d 6 //多项式维数
#define D d+1

#define M 5
#define N 8

int main( )
{
int i,j;
float a,b,c;
float p[d][d] = {0};//全部初始化为0


p[0][0]=1; p[1][0]=0; p[1][1]=1;
for (int n=0; n<d; n++)
{
for (int k=0;k<d;k++)
{
/*
if (n<k)
{ p[n][k]=0;

}
*/
//else
//{
if (k<1)
a=0;
else
a=p[n][k-1];

if (n<1)
b=0;
else
b=p[n-1][k];
c= a*(2*n+1)/(n+1)-b*n/(n+1.0);

if (n+1>d)
break;
else
p[n+1][k]=c;
//}




p[0][0]=1; p[1][0]=0; p[1][1]=1;

}

}



float sum[D][D]={0};
float res[d][d]={0};
float rest[M][N]={0};

int z=1;

for (int m1=0; m1<=d; m1++){

for (int n1=0; n1<=d-m1-1; n1++){

for (int m2=0; m2<=M-1; m2++){

for (int n2=0; n2<=N-1; n2++){

for (int t1=0; t1<=m1; t1++){

for (int t2=0; t2<=n1; t2++){

sum[m1][n1]+=z*(2*m1+1)*(2*n1+1)*p[m1][t1]*p[n1][t2]*pow((2*m2/M-1),t1)*pow((2*n2/N-1),t2)/(M*N);

}
}
}
}
}
}



for(int k=0;k<=d;k++){

for(int l=0;l<=d-k-1;l++){

for (int m3=0;m3<=d;m3++){

for (int n3=0;n3<=d-m3-1;n3++){

if (m3>=k && n3>=l)
for(int k1=k;k1<=m3;k1++){

for(int l1=l;l1<=n3;l1++){

// float z1=1;
// float z2=1;

// k1大于k
float aa1,aa2,bb1,bb2,cc1,cc2,z1,z2;


//aa1=k;
float res1=1,res2=1,res3=1,res4=1,res5=1,res6=1;

for ( bb1=k1;bb1>=1;bb1--)
{ res1=res1*bb1;

}

for ( aa1=k ;aa1>=1;aa1--)
{ res2=res2*aa1;

}

for ( cc1=k1-k ;cc1>=1;cc1--)
{ res3=res3*cc1;

}


z1=res1/(res2*res3);



// for (l=1;l<=l1;l++)
//
for ( bb2=l1;bb2>=1;bb2--)
{res4=res4* bb2 ;

}
for ( aa2=l ;aa2>=1;aa2--)
{ res5=res5* aa2 ;

}

for ( cc2=l1-l ;cc2>=1;cc2--)
{ res6=res6* cc2 ;

}


z2=res4/(res5*res6);

res[k][l]+=pow(-1, k1+l1-k-l)*pow(2, k+l)*z1*z2*sum[m3][n3]*p[m3][k1]*p[n3][l1];


}

}

else
continue;


}


}


}


}




//float ttt=0;
/*
for (int j4=0;j4<M;j4++ ){

for (int j3=0;j3<N;j3++ ){

// for (float x=0; x<=1;x=x+1/M){
// for (float y=0; y<=1;y=y+1/N){

for (int kk=0;kk<=d;kk++){
for (int ll=0;ll<=d-kk;ll++){

rest[j4][j3]=pow(1/(j4+1),kk)*pow(1/(j3+1),ll)*res[kk][ll]+rest[j4][j3];

}
}


}
}


*/
//}
//}


for (i=0;i<d;i++) //输出矩阵
{
for (j=0;j<d;j++)
{
printf("% 6f ",res[i][j]);
}
printf("\n");
}

/*
for (i=0;i<M;i++) //输出矩阵
{
for (j=0;j<N;j++)
{
printf("% 6f ",rest[i][j]);
}
printf("\n");
}




*/
}
















d设置为4时,没有问题,设置为7时就有问题出现?什么原因?
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
猫熊学习
C语言 70,040 成员 243,237 内容