我有一个用代码创建的二维矩阵:

for(i=0; i < size; i++)
{
    for(j=0; j <size; j++)
    {
        a1[i][j] = i+1 + j+2;
    }
}


我正在尝试在以下方式创建的矩阵中复制该模式:

double*
a = malloc(sizeof(double)*randk*randk);


我似乎无法弄清楚如何定义相同的模式。

最佳答案

您是说要创建相同的数字模式?就是这样:

for(int i = 0; i < randk; ++i)
  for(int j = 0; j < randk; ++j)
    a[i * randk + j] = i + j + 3;


或者,如果您更喜欢单循环:

for(int i = 0; i < randk * randk; ++i)
  a[i] = (i / randk) + (i % randk) + 3;

08-16 11:48