阵列不连续性

时间:2013-06-27 00:18:23

标签: c arrays

所以我试图创建一个矩阵的一般形式,当2N = 6时看起来像(6x6)

1 0 0 -1/1!    0    0  
0 1 0 -1/1! -1/1!   0  
0 0 1 -1/2! -1/1! -1/1!  
0 0 0 -1/3! -1/2! -1/1!  
0 0 0 -1/4! -1/3! -1/2!  
0 0 0 -1/5! -1/4! -1/3! 

也就是说,N = 3给出了带有
的6x6矩阵 TL象限中的身份
BL象限中为null 列中的-1 /阶乘从0到N-1,向下移一。

我试图尽可能地做到这一点。到目前为止,我有:

    #include <stdio.h>
    #include <math.h>

    int main()
    {
     int A, B, C, R, M;
     int i, j, N;
     double n,r,c,rf,x;

     N=3;
     n=N;
     M=(N+N-1);

     double a[(2*N)][(2*N)];

     for(A=0; A<N; A++)
     {a[A][A]=1.0;
     }

    for(C=N; C<=M;C++)
      {
      for(R=(C-N);R<=(M);R++)
        {
        r=R-(C-N);
        rf=1;
        for(x=1; x<=r; x++)
            {
                   rf=rf*x;
            }
                a[R][C]=((-1)/rf);
        }
      }





    for (i = 0; i < 2*N; i++)
      {
        for (j = 0; j < 2*N; j++)
        {
          printf(" %f ", a[i][j]);
          if (j % 3 == 2) printf("  ");
        }
        printf("\n");

      }

       /*
      for(i=0;i<=M;i++)
    {
    for(j=0;j<=M;j++)
      {
      printf("[%d][%d] = %f \n", i, j,a[i][j]);
      }
    }
    */
    return 0;
    }  

我已经包含(但已注释掉)单个元素打印输出。这适用于N = 3但是当试图增加N的值时我会遇到一些非常奇怪的结果并且无法弄清楚为什么,任何人都可以帮忙吗? (例如N = 4,a [2] [0]数量巨大)没有“调试错误”,因为它编译并运行。不是要求人们调试,而是想知道我是否缺少阵列的一般属性?

谢谢

1 个答案:

答案 0 :(得分:1)

初始化数组以使所有零开头:

double a[(2*N)][(2*N)] = {0.0};

否则您从未写过值的元素具有不确定的值。

相关问题