您能帮我吗,我有问题。这是转置矩阵的程序。当行数或列数等于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/

10-11 19:01