错了无数遍竟然是因为判断的是'A'与'0'……
#include<stdio.h>
int map[3][3];
int main()
{
int i,j;
int f1=0,f2=0;
int s1=0,s2=0,s3=0;
for(i=1; i<=3; i++)
{
for(j=1; j<=3; j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='X')
s1++;
else if(map[i][j]=='0')
s2++;
else s3++;
}
getchar();
}
if(map[1][1]==map[1][2]&&map[1][1]==map[1][3]&&map[1][1]=='X') f1=1;
else if(map[1][1]==map[1][2]&&map[1][1]==map[1][3]&&map[1][1]=='0') f2=1;
else if(map[2][1]==map[2][2]&&map[2][1]==map[2][3]&&map[2][1]=='X') f1=1;
else if(map[2][1]==map[2][2]&&map[2][1]==map[2][3]&&map[2][1]=='0') f2=1;
else if(map[3][1]==map[3][2]&&map[3][1]==map[3][3]&&map[3][1]=='X') f1=1;
else if(map[3][1]==map[3][2]&&map[3][1]==map[3][3]&&map[3][1]=='0') f2=1;
else if(map[1][1]==map[2][1]&&map[1][1]==map[3][1]&&map[1][1]=='X') f1=1;
else if(map[1][1]==map[2][1]&&map[1][1]==map[3][1]&&map[1][1]=='0') f2=1;
else if(map[1][2]==map[2][2]&&map[1][2]==map[3][2]&&map[1][2]=='X') f1=1;
else if(map[1][2]==map[2][2]&&map[1][2]==map[3][2]&&map[1][2]=='0') f2=1;
else if(map[1][3]==map[2][3]&&map[1][3]==map[3][3]&&map[1][3]=='X') f1=1;
else if(map[1][3]==map[2][3]&&map[1][3]==map[3][3]&&map[1][3]=='0') f2=1;
else if(map[1][1]==map[2][2]&&map[1][1]==map[3][3]&&map[1][1]=='X') f1=1;
else if(map[1][1]==map[2][2]&&map[1][1]==map[3][3]&&map[1][1]=='0') f2=1;
else if(map[1][3]==map[2][2]&&map[1][3]==map[3][1]&&map[1][3]=='X') f1=1;
else if(map[1][3]==map[2][2]&&map[1][3]==map[3][1]&&map[1][3]=='0') f2=1;
if(s1<s2||s1-s2>1) printf("illegal\n");
else if(f1==1&&f2==1) printf("illegal\n");
else if(f1==1&&f2==0)
{
if(s1==s2) printf("illegal\n");
else printf("the first player won\n");
}
else if(f1==0&&f2==1)
{
if(s1==s2) printf("the second player won\n");
else printf("illegal\n");
}
else
{
if(s3==0) printf("draw\n");
else
{
if(s1==s2) printf("first\n");
else printf("second\n");
}
}
return 0;
}