#字棋代码
注意事项
scanf(" %c",&a[i][j]);中的空格用于跳过任何空白字符,包括空格、制表符和换行符,这确保了即使用户在输入时包含这些字符,也能正确读取棋盘状态。
judge函数中的same变量在每次检查新的行、列或对角线之前都被重置为0。
代码假设棋盘上的空位已经被某种方式处理,因为judge函数只检查是否有玩家赢得游戏,而不检查棋盘是否已满或是否有平局。
#include<stdio.h>
bool judge(char a [3][3],char t)
{
int same =0;
for(int i=0;i<3;i++)
{ same =0;
for (int j=0;j<3;j++)
{
if(a[i][j]==t) same++;
}
if(same==3) return true ;
}
for(int i=0;i<3;i++)
{ same =0;
for (int j=0;j<3;j++)
{
if(a[j][i]==t) same++;
}
if(same==3) return true;
}
same =0;
for(int i=0;i<3;i++)
{
if(a[i][i]==t) same++;
if(same==3) return true;
}
same=0;
for(int i=0;i<3;i++)
{
if(a[i][2-i]==t) same++;
if(same==3) return true ;
}
return false ;
}
int main()
{
char a[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
scanf(" %c",&a[i][j]);
}
}
if(judge(a,'K')) printf("KiKi wins!");
else if(judge(a,'B')) printf("BoBo wins!");
else printf("No winner!");
return 0;#include<stdio.h>
bool judge(char a [3][3],char t)
{
int same =0;
for(int i=0;i<3;i++)
{ same =0;
for (int j=0;j<3;j++)
{
if(a[i][j]==t) same++;
}
if(same==3) return true ;
}
for(int i=0;i<3;i++)
{ same =0;
for (int j=0;j<3;j++)
{
if(a[j][i]==t) same++;
}
if(same==3) return true;
}
same =0;
for(int i=0;i<3;i++)
{
if(a[i][i]==t) same++;
if(same==3) return true;
}
same=0;
for(int i=0;i<3;i++)
{
if(a[i][2-i]==t) same++;
if(same==3) return true ;
}
return false ;
}
int main()
{
char a[3][3];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
scanf(" %c",&a[i][j]);
}
}
if(judge(a,'K')) printf("KiKi wins!");
else if(judge(a,'B')) printf("BoBo wins!");
else printf("No winner!");
return 0;
