当尝试迭代多维数组以使用计算的 table 值填充数组的其余部分时,C 程序未按预期运行

C program not functioning as expected when trying to iterate over multidimensional array to fill the rest of the array with calculated table values

在下面的代码中,所有变量(startVendVvolumeSteptempStep)都是用户在代码。变量 rowNum 是一个整数。该程序似乎在到达 Table[j][i] = (nR*(Table[i][0]))/(Table[0][j]); 时中断并尝试使用数组中已有的行和列来计算和分配值。我不知道出了什么问题。提前感谢您的帮助:)哦,是的,数组 Table 被初始化为 Table[rowNum][9];

for (int i = 1;i<=8;i++) //Fills the Volume COLUMNS axis of the table [0][v]
{
    Table[0][i] = startV + (volumeStep*(i-1));
}



for (int i = 1;i<=rowNum;i++) //Fills the Temperature ROWS axis of the table  [t][0]
{
    Table[i][0] = startT + (tempStep*(i-1));
}



nR = moles*8.314;

for (int i = 1; i<=rowNum;i++)
{
    for (int j = 1; j<=8; j++)
    {
        Table[j][i] = (nR*(Table[i][0]))/(Table[0][j]);
        printf("%lf", Table[i][j]);
    }
}

c 中的数组索引从 0N - 1,例如

for (int i = 1 ; i <= rowNum ; i++)

应该是

for (int i = 0 ; i < rowNum ; i++)

因此,当您达到 i == rowNum 时,您的程序会调用未定义的行为

或者您应该将 Table 声明为

double Table[rowNum + 1][9];

Oh yeah, and the array Table is initialized as Table[rowNum][9];

这意味着:

Table[j][i] = (nR*(Table[i][0]))/(Table[0][j]);

错了。您的意思是 Table[j][i],因为您将 i1 循环到 rowNum,将 j1 循环到 8

此外,如果您的第一个数组有 rowNum 个元素,您只能循环到 rowNum - 1 个(包括最后一个元素)。