我正在用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;
}
答案 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,因为截断会解决这个问题。