#include<stdio.h>
int main()
{
char a[3][3];
int i,j,b[3][3],sum[8],flag;
for(i=0;i<3;i++)//根据a[3][3]中每个数据来确定b[3][3]中对应的数据
for(j=0;j<3;j++) {scanf("%c",&a[i][j]);
if(a[i][j]=='X') {b[i][j]=1;continue;}
else if(a[i][j]=='O') {b[i][j]=-1;continue;}
else if(a[i][j]=='.') {b[i][j]=0;continue;}}
for(i = 0;i < 3;i++) //这个for循环是求出各行之和并依次存入sum数组中
{for(j = 0;j < 3;j++) sum[i] += a[i][j];}
for(i = 0;i < 3;i++) //这个for循环是求出各列之和
{for(j = 0;j < 3;j++) sum[i+3] +=a[j][i]; }
for(i = 0;i < 3;i++) sum[2*3] += a[i][i];//求正对角线
for(i = 0;i < 3;i++) sum[7] += a[i][2-i];//求辅对角线
for(i=0;i<8;i++)
{if(sum[i]==3) {flag=1;break;}//通过每条直线上和的大小来确定排列情况
else if(sum[i]==-3) {flag=-1;break;}
else flag=0;}
if(flag==1) printf("X win!");//通过判断flag的值来输出最终结果
else if(flag==-1) printf("O win!");
else printf("No one win!");
return 0;
}
我认为出错应该是在b[3][3]的赋值上,但不知道为啥错了,求解答
sum[i] += a[i][j];
sum数组你没有初始化为0啊