您能帮我吗,我有问题。这是转置矩阵的程序。当行数或列数等于357或更大的程序不起作用时(定义MAX_n 357,定义MAX_m 357)。当小于357时程序正常工作。
#include <stdio.h>
#include <stdlib.h>
#define MAX_m 357
#define MAX_n 357
void main()
{
int a[MAX_m][MAX_n],b[MAX_m][MAX_n];
int r=0,j,i;
printf("\nProgram to transpose matrix\n");
for(i=0;i<MAX_m;i++)
{
for(j=0;j<MAX_n;j++)
{
r=rand();
a[i][j]=r;
}
}
printf("\nMatrix A: ");
for(i=0;i<MAX_m;i++)
{
printf("\n");
for(j=0;j<MAX_n;j++)
{
printf(" ");
printf("%d",a[i][j]);
}
}
for(i=0;i<MAX_m;i++)
{
for(j=0;j<MAX_n;j++)
{
b[i][j]=a[j][i];
}
}
printf("\nResultant Matrix: ");
for(i=0;i<MAX_m;i++)
{
printf("\n");
for(j=0;j<MAX_n;j++)
{
printf(" ");
printf("%d",b[i][j]);
}
}
printf("\n");
return(0);
}
最佳答案
正如其他人在评论中指出的那样,这一定是内存分配问题。在Unix上,您可以在Bash shell中检查ulimit -s
的堆栈大小限制,或者在tcsh中检查limit stack
。
由于这看起来像家庭作业,因此我将把它留给您和您的老师,以讨论不同的内存分配策略。
附注:将来指出您遇到的故障类型会有所帮助,而不是仅仅指出“它没有用”。
关于c - C编程转置矩阵,#define,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18967160/