我试图在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
}
终端输出:
答案 0 :(得分:2)
您的for循环应分别从i = 0
和j = 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
以获得正确答案。