我尝试在C中编写一个应该输出这样的程序:
A B C D E F G H
1 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0
代码:
#include <stdio.h>
#define FILA 8
#define COLUMNA 8
int main(void)
{
int nFila = 1;
int tablero[FILA][COLUMNA] = {};
int i, j;
printf(" A B C D E F G H\n");
for (i = 0; i < FILA; i++)
{
printf("%d ", nFila);
nFila++;
for (j = 0; i < COLUMNA; j++)
{
printf("%d ", tablero[i][j]);
}
printf("\n");
}
return 0;
}
然而,它为每个看似是内存地址的数组索引输出随机数... 我怎么能做到这一点?
答案 0 :(得分:1)
您还应该初始化子数组:
#include <stdio.h>
#define FILA 8
#define COLUMNA 8
int main(void)
{
int nFila = 1;
int tablero[FILA][COLUMNA] = {{},};
int i, j;
printf(" A B C D E F G H\n");
for (i = 0; i < FILA; i++)
{
printf("%d ", nFila);
nFila++;
for (j = 0; j < COLUMNA; j++)
{
printf("%d ", tablero[i][j]);
}
printf("\n");
}
return 0;
}
BTW我也在内循环中修复了条件。
答案 1 :(得分:0)
您的输出中有垃圾值。
您可以通过用0部分初始化数组 tablero 将数组中的所有值设置为0.
因此,数组中的所有值都将初始化为0。
int tablero[FILA][COLUMNA] = {0};
此外,您的代码中存在错误
请将您的专线for (j = 0; i < COLUMNA; j++)
更正为:
for (j = 0; j< COLUMNA; j++)