如何使用循环从1到9打印三行数

时间:2014-11-19 16:50:38

标签: c loops

我正在用C编写一个tic tac toe游戏。我坚持制作这样的棋盘:

1   2   3
4   5   6
7   8   9

我想使用循环,这样我就不必使用带有许多\n&{39}和\t的打印函数...

这是我的尝试:

for (i=0;i<=9;i++)
{
    printf("\n\n\n\t\t\t");
    for (j=i;j<=i+2;j++)
    {
        printf("%c\t",boarddots[j]);
    }
    if (i==3)
    break;
}

4 个答案:

答案 0 :(得分:0)

像这样的东西,你可以根据你的实际需要进行调整:

for(int i = 1; i <= 9; ++i)
{
    printf("%d", i);  // print numbers one by one
    if (0 == i % 3)
        printf("\n"); // start new line if current number is divisible by 3
}

P.S。对不起可能的拼写错误

答案 1 :(得分:0)

for (int row = 0; row < 3; row++)
{
  for (int column = 0; column < 3; column++)
  {
    printf("%d ", (row * 3) + column + 1);
  }
  printf ("\n");
}

/*
output:

1 2 3
4 5 6
7 8 9

*/

答案 2 :(得分:0)

您的循环条件for (i=0;i<=9;i++)迭代次数过多。就个人而言,我会使用像char board [3][3]这样的二维数组,但每次只需一步即可帮助解决您的问题。

#include<stdio.h>

char boarddots[] = "--O-XX-O-";

int main()
{
    int i;
    for (i=0; i<9; i++) {
        if (i % 3 == 0)
            printf("\n\n\n\t\t");
        printf("\t%c",boarddots[i]);
    }
    return 0;
}

答案 3 :(得分:0)

可以打印为字符串并使用字符串截断:

char boarddots[9] = {'1','2','3','4','5','6','7','8','9'};
int loop;

for (loop=0; loop<9; loop+=3)
    printf ("%.3s\n", &boarddots[loop]);

你不需要在char数组的末尾使用NULL,因为截断会解决这个问题。