在C中使用for循环创建矩阵

时间:2016-02-08 06:51:14

标签: c

我试图在C中使用for循环创建2个矩阵。

矩阵A是[18x16],其中每个元素A [i,j] = i + j,用于(i = 1,...,18; j = 1,...,16)
矩阵B是[16x18],其中每个元素B [i,j] = i + 2j,对于(i = 1,...,16; j = 1,...,18)

根据我的Ubuntu(虚拟机)终端输出,我错过了矩阵A的整行,并且矩阵A和B在两个特定位置都有错误的元素:A [17,16]和B [ 15,18],敬请(见下图)。

代码如下,任何帮助将不胜感激。

#include <stdio.h>

int A[18][16];
int B[16][18];
int i, j; 

int main(void)
{
    // Create the A matrix
    for(i = 1; i < 18; i++){

        for(j = 1; j < 16; j++){
            A[i][j] = i + j;
            printf("%d ", A[i][j]);
        } // End inner loop

        printf("\n");
    } // End outer loop

    printf("\n");

    // Create the B matrix
    for(i = 1; i < 16; i++){

        for(j = 1; j < 18; j++){
            B[i][j] = i + (2*j);
            printf("%d ", B[i][j]);
        } // End inner loop

        printf("\n");
    } // End outer loop
}

终端输出:

enter image description here

2 个答案:

答案 0 :(得分:2)

您的for循环应分别从i = 0j = 0开始。

答案 1 :(得分:0)

正如Holsetly指出的那样,C是从0开始的。

因此您需要进行以下更改。

for(i = 0; i < 18; i++){
    for(j = 0; j < 16; j++){
        A[i][j] = i + j + 2;    // Add 1 for i, 1 for j
        printf("%d ", A[i][j]);
    } // End inner loop
    printf("\n");
} // End outer loop

同样,对另一个循环进行更改。

编辑:对于第二个循环,您需要将{3}添加到i + 2j以获得正确答案。