井字棋

#include<iostream>

using namespace std;

int main()

{

int sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8;

char arr[3][3];

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

cin>>arr[i][j];

}

}

sum1=sum2=sum3=sum4=sum5=sum6=sum7=sum8=0;

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

if(i==j&&arr[i][j]=='B')

sum1++;

if(i+j==2&&arr[i][j]=='B')

sum2++;

}

if(arr[i][0]=='B')

sum3++;

if(arr[i][1]=='B')

sum4++;

if(arr[i][2]=='B')

sum5++;

if(arr[0][i]=='B')

sum6++;

if(arr[1][i]=='B')

sum7++;

if(arr[2][i]=='B')

sum8++;

}

if(sum1==3||sum2==3||sum3==3||sum4==3||sum5==3||sum6==3||sum7==3||sum8==3)

{

cout<<"BoBo wins!";

return 0;

}

sum1=sum2=sum3=sum4=sum5=sum6=sum7=sum8=0;

for(int i=0;i<3;i++)

{

for(int j=0;j<3;j++)

{

if(i==j&&arr[i][j]=='K')

sum1++;

if(i+j==2&&arr[i][j]=='K')

sum2++;

}

if(arr[i][0]=='K')

sum3++;

if(arr[i][1]=='K')

sum4++;

if(arr[i][2]=='K')

sum5++;

if(arr[0][i]=='K')

sum6++;

if(arr[1][i]=='K')

sum7++;

if(arr[2][i]=='K')

sum8++;

}

if(sum1==3||sum2==3||sum3==3||sum4==3||sum5==3||sum6==3||sum7==3||sum8==3)

{

cout<<"KiKi wins!";

return 0;

}

else

{

cout<<"No winner!";

return 0;

}

}

  • 首先定义了 8 个整型变量sum1sum8,它们将用于统计不同情况下特定字符出现的次数。接着定义了一个二维字符数组arr,用于存储一个 3 行 3 列的字符矩阵,可能用来表示类似棋盘之类的布局。
  • 通过两层嵌套的for循环,从标准输入(通常是控制台)读取 9 个字符,依次填充到arr数组中,以构建这个 3x3 的字符矩阵。
  • 先将所有的sum变量初始化为 0,以便后续准确统计字符B出现的次数。
  • 第一个嵌套for循环中,通过两个if条件来统计两种对角线情况:if(i==j&&arr[i][j]=='B'):这个条件判断主对角线上(即行列索引相等的位置)的元素是否为B,如果是则sum1自增 1,用于统计主对角线上B出现的次数。if(i+j==2&&arr[i][j]=='B'):这个条件判断副对角线上(行列索引之和为 2 的位置)的元素是否为B,如果是则sum2自增 1,用于统计副对角线上B出现的次数。
  • 然后通过 6 个单独的if语句分别统计每行、每列中字符B出现的次数,分别累加到sum3sum8这几个变量中。
  • 最后通过一个if条件判断,如果上述 8 个统计变量中任意一个的值等于 3,就意味着在对应的行、列或者对角线上B字符连续出现了 3 次,此时输出"BoBo wins!"并结束程序(通过return 0)。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务