是井字棋2维数组问题,
困扰我两小时了,万分感只因解惑。
我想用调用函数的方法,在每次循环后用3x3列表的形式输出数组,
辅助理解数组。请教教如何写书这样的代码,同类帖子似乎用的是指针,我还没学到。
该怎么修改呢。
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
//其他问题写注释里啦
#include <stdio.h>
int main()//井字棋2维数组例题。
{
//1.不理解下一行为这么写,都是什么意思??为什么不是9个变量 ?
int x0=0, x1=0, x2=0, x3=0, o0=0, o1=0, o2=0, o3=0;
const int size = 3;
int board[size][size];
int i,j;
//2.编译器显示没有用到下一行result变量,这个感觉不用也行,但是我想知道怎么利用起来?
int result = -1;//-1是平局,0是O赢了,1是X赢了
for ( i=0; i<size; i++ ) {//输入棋子结果
for ( j=0; j<size; j++ ) {
scanf("%d", &board[i][j]);
}
}
/* 3. 我想用调用函数的方法,在每次循环后用3x3列表的形式输出数组,
辅助理解数组。请教教如何写书这样的代码,同类帖子似乎用的是指针,我还没学到。
该怎么修改呢。
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
priintf("%d,%d,%d\n",board[size],board[size],board[size]);
*/
for ( i=0; i<size ; i++ ) {
for ( j=0; j<size; j++ ) {//横线方向
if ( board[i][j] == 1 ) {
x0 ++;
} else {
o0 ++;
}
if ( board[j][i] == 1 ) {//竖线方向
x1 ++;
} else {
o1 ++;
}
}
if ( board[i][i] == 1 ) {//斜方向1
x2 ++;
} else {
o2 ++;
}
// 4.下面这句话的意思大概能理解,但是我自己想不到 可以这么表达。
//请传授思考过程,万分感只因。
if ( board[i][size-1-i] == 1) {//斜方向2
x3 ++;//看不懂
} else {
o3 ++;//
}
}
if ( x0==size || x1==size || x2==size || x3==size ) {//X赢的判定
result = 1;
printf("X方胜");
} else if ( o0==size || o1==size || o2==size || o3==size ) {//O赢的判定
result = 0;
printf("O方胜");
} else {
printf("平局");
}
return 0;
}