#include<stdio.h>
int main(){
const int size=3;
int board[size][size];
int i,j;
int numofX;
int numof0;
int result=-1;
printf("-1:没人赢,1:X赢,0:0赢。\n");
printf("请输入一个3乘3的矩阵:\n");
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++){//i未到size以及没人赢循环继续
numof0=numofX=0;//0和X的数量都置为0
for(j=0;j<size;j++){
if(board[i][j]==1){//判断每行的三个元素
numofX++;//记录1的数量
}
else{
numof0++;//记录0的数量
}
if(numofX==size){//1的数量为size
result=1;//1赢
}
else if(numof0==size){//0的数量为size
result=0;//0赢
}
}
}
//检查列
if(result==-1){//没人赢继续判断
for(j=0;j<size&&result==-1;j++)//j未到size以及没人赢循环继续
numofX=numof0=0;
for(i=0;i<size;i++){
if(board[i][j]==1){//判断每列的三个元素
numofX++;//记录1的数量
}
else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
}
//检查正对角线
if(result==-1){//没人赢继续判断
numofX=numof0=0;
for(i=0;i<size;i++){//i未到size
if(board[i][i]==1){//判断数组[0][0],[1][1],[2][2]的三个位置是否相同
numofX++; //记录1的数量
}
else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
//检查负对角线
if(result==-1){//没人赢继续判断
for(i=0;i<size;i++){
if(board[i][size-i-1]==1){//判断数组[2][0],[1][1],[2][0]的三个位置是否相同
numofX++;//记录1的数量
}else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
printf("%d",result);
return 0;
}
int main(){
const int size=3;
int board[size][size];
int i,j;
int numofX;
int numof0;
int result=-1;
printf("-1:没人赢,1:X赢,0:0赢。\n");
printf("请输入一个3乘3的矩阵:\n");
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++){//i未到size以及没人赢循环继续
numof0=numofX=0;//0和X的数量都置为0
for(j=0;j<size;j++){
if(board[i][j]==1){//判断每行的三个元素
numofX++;//记录1的数量
}
else{
numof0++;//记录0的数量
}
if(numofX==size){//1的数量为size
result=1;//1赢
}
else if(numof0==size){//0的数量为size
result=0;//0赢
}
}
}
//检查列
if(result==-1){//没人赢继续判断
for(j=0;j<size&&result==-1;j++)//j未到size以及没人赢循环继续
numofX=numof0=0;
for(i=0;i<size;i++){
if(board[i][j]==1){//判断每列的三个元素
numofX++;//记录1的数量
}
else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
}
//检查正对角线
if(result==-1){//没人赢继续判断
numofX=numof0=0;
for(i=0;i<size;i++){//i未到size
if(board[i][i]==1){//判断数组[0][0],[1][1],[2][2]的三个位置是否相同
numofX++; //记录1的数量
}
else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
//检查负对角线
if(result==-1){//没人赢继续判断
for(i=0;i<size;i++){
if(board[i][size-i-1]==1){//判断数组[2][0],[1][1],[2][0]的三个位置是否相同
numofX++;//记录1的数量
}else{
numof0++;//记录0的数量
}
}
if(numof0==size){//0的数量为size
result=0;//0赢
}else if(numofX==size){//1的数量为size
result=1;//1赢
}
}
printf("%d",result);
return 0;
}