我试图计算一个数字出现在2D数组中的次数,但是当我尝试打印值时,它开始在第一个元素后给出错误的数字。我试图想出这个我有的数独项目,但我发布不同的源代码,所以我可以弄清楚为什么会发生这种情况。
#include <stdio.h>
int main() {
int i, j, k;
char check[10];
char puzzle[6][10] = {
{ 1, 1, 3, 4, 4, 4, 5, 9, 2, 7 },
{ 9, 9, 8, 8, 8, 8, 8, 6, 9, 5 },
{ 1, 1, 3, 4, 4, 4, 5, 9, 2, 7 },
{ 9, 9, 8, 8, 8, 8, 8, 6, 9, 5 },
{ 1, 1, 3, 4, 4, 4, 5, 9, 2, 7 },
{ 9, 9, 8, 8, 8, 8, 8, 6, 9, 5 }
};
for (i = 0; i < 6; i++) {
for (j = 0; j < 10; j++) {
check[puzzle[i][j]]++;
}
}
for (k = 1; k < 10; k++) {
printf("check[%d] = %d\n", k, check[k]);
}
return 0;
}
OUTPUT:
check[1] = 6
check[2] = -101
check[3] = -6
check[4] = -56
check[5] = 101
check[6] = 2
check[7] = -126
check[8] = 15
check[9] = 12
Program ended with exit code: 0
我试图计算一个数字出现在2D数组中的次数,但是当我尝试打印值时,它开始在第一个元素后给出错误的数字。
要递增的数组check
中的值不为零,因为数组永远不会初始化。
这一行:
char check[10];
需要这样:
char check[10] = {0};