简单的井字棋二维数组判断胜负
#include<stdio.h>
int main()
{
const int size = 3;//棋盘大小
int board[size][size];
int i,j;
int numofx;
int numofo;
int numofx1,numofx2,numofo1,numofo2;
int result = -1;//-1无人获胜 1:x获胜 0:o获胜
//读入矩阵
for (i = 0; i<size; i++) {
for (j = 0; j<size; j++) {
scanf("%d", &board[i][j]);
}
}
//检查行列(目的:合并行和列 )
for ( i = 0; i<size && result==-1; i++) {
numofx1 = numofx2 = numofo1 = numofo2 = 0;
for ( j = 0; j<size; j++) {
if ( board[i][j] == 1) {
numofx1++;
} else {
numofo1++;
}
if (board[j][i] == 1) {
numofx2++;
} else {
numofo2++;
}
}
if (numofo1 == size || numofo2 == size) {
result = 0;
} else if (numofx1 == size || numofx2 == size) {
result = 1;
}
}
//一次性检查对角线
numofx1 = numofo1 = numofx2 = numofo2 = 0;
j = size - 1;
for ( i = 0; i<size && result == -1; i++) {
if (board[i][i] == 1) {
numofx1++;
} else {
numofo1++;
}
if (board[i][j] == 1) {
numofx2++;
} else {
numofo2++;
}
j--;
if (numofo1 == size || numofo2 == size) {
result = 0;
} else if (numofx1 == size || numofx2 == size) {
result = 1;
}
}
if (result == -1) {
printf("none win");
} else if (result == 1) {
printf("x is winner");
} else if (result == 0) {
printf("o is winner");
}
return 0;
}