我刚刚开始制作我的数独游戏,我已经创建了这个函数grid
来创建6x6
数独网格。我已经将rand()
函数用于每个单元格中的不同数字(目前它只会检查行以重复数字)。 rand()
也用于每个网格中的空单元格的随机数。
问题在于,有时网格是完美的6x6
并且没有任何数字重复(仅在行中),但是,有时在某些单元格中会生成垃圾值,有时会增加列数。我不明白是什么原因造成的?
守则:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void grid(void) {
int cell[6][6], row, col, s, i, j;
char in = 'A';
srand(time(NULL));
for (row = 0; row <= 5; row++) {
printf("\t\t\t[ |");
for (col = 0; col <= 5; col++) {
s = rand() % 6 + 1;
if (s % 2 == 0)
{
cell[row][col] = rand() % 6 + 1;
for (j = 0; j<col; j++) {
if (cell[row][j] == cell[row][col]) {
col--;
continue;
}
}
}
else { printf(" | ", in++); continue; }
printf(" %d | ", cell[row][col]);
}
printf("]\n\n");
}
}
int main()
{
grid();
}
答案 0 :(得分:0)
他们发布的代码中的语法错误太多,而且格式非常糟糕。尝试编辑它,以便我们为您提供帮助!
col--; 也许这是你的问题,因为如果你
col--;
循环for (col = 0; col < 6; col++)
,你将进行6次以上的迭代。
答案 1 :(得分:0)
我知道这个问题很老,但这里的评论者确实说至少要等 1 小时...
直接回答您的问题:
cell
时为 (s % 2 == 0)
设置值。c--
语句导致 col
循环执行 6 次以上(并且每次都执行 printf)。如果您想保持逻辑的一般结构,请分两遍执行此操作 - 完全填充 cell
,然后打印整个内容。但是,还有其他问题。您可能想要完全删除 s % 2 == 0
检查,第一个 continue
可以是 break
(如果您真的想让人们生气,则可以是 goto
)。>