c - 在 C 中的其他输出之间打印数组元素

标签 c arrays printf

我正在尝试将我的数独解决程序的结果打印到终端中,如下所示:

  +-------+-------+-------+
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  +-------+-------+-------+
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  +-------+-------+-------+
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  +-------+-------+-------+

我将我的解决方案存储在一维数组中,但找不到打印它的方法。到目前为止,这是我想出的:

printf("| %c %c %c | %c %c %c | %c %c %c |\n", test[0],test[1],test[2],test[3],test[4],test[5],test[6],test[7],test[8]);

我不能使用任何循环,因为我需要在数字周围画“墙”。有没有更好的方法呢?为什么

char test[] = {'1','2','3','4','5','6','7','8','9'};
int i = 0;
printf("| %c %c %c | %c %c %c | %c %c %c |\n",   test[i++],test[i++],test[i++],test[i++],test[i++],test[i++],test[i++],test[i++],test[i++]);

返回| 9 8 7 | 6 5 4 | 3 2 1 | 谢谢。

最佳答案

这是将其分解为(嵌套)循环的一种方法:

void print_data_row(const char *p) {
    printf("|");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf(" %c", p[i*3 + j]);
        }
        printf(" |");
    }
    printf("\n");
}

void print_separator(void) {
    printf("+-------+-------+-------+\n");
}

...
print_separator();
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        print_data_row(&board[(i*3 + j) * 9]);
    }
    print_separator();
}

关于c - 在 C 中的其他输出之间打印数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32287311/

相关文章:

c - 这个算法的运行时间是多少?

c - printf 参数不足

java - 当一个列表不稳定时如何比较两个列表的顺序

java - 如何在打印语句中使用零填充标志准确打印两个位置

c - 为什么我的代码之间的打印为零?

c - C 语言中\t 遇到\b 会发生什么?

CS50 从 card.raw 恢复 jpg 图像

C 编程,绝对初学者指南 - 第 19 章,strcat() 函数代码无法正常工作

c++ - 将逗号添加到存储在数组中的一组字符串

c++ - 在 C++ 中使用 memcpy