weixin_53963247 2020-12-25 00:17 采纳率: 100%
浏览 13
已结题

c语言程序三子棋,两人轮流下棋,请问大佬下面的程序有无错误,该如何修改

#include<stdio.h>
#include<stdlib.h>
void print(char a[3][3],int x,int y)
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%2d |",a[i][j]);
		}
		printf("\n");
		printf("---+---+---");
		printf("\n");
	}
}
char win(char a[3][3])
{
	int i;
	for(i=0;i<3;i++)
	{
		if ((a[i][0]==a[i][1]) && (a[i][1] == a[i][2]))
			return a[i][0];
		else if ((a[0][i] == a[1][i]) && (a[1][i] == a[2][i]) )
			return a[0][i];
		else if ((a[0][0] == a[1][1]) && (a[1][1] == a[2][2]) )
			return a[1][1];
		else if ((a[0][2] == a[1][1]) && (a[1][1] == a[2][0]) )
			return a[1][1];
	}
	return 0;
}
void main() 
{
	char a[3][3]={'1','2','3','4','5','6','7','8','9'};
	int i,j,n,k;
	for(k=1;k<10;k++)
	{
		print(a,3,3);
		printf("1-9代表九宫格中的位置,请输入1-9落子\n");
		scanf("&d",&n);
		for(i=0;i<3;i++)
		{
			for(j=0;j<3;j++)
			{
				if(a[i][j]==n+48)
					if(k%2!=0)
						a[i][j]='o';
					else
						a[i][j]='x';
			}
		}
		if ((win(a)) == 'o')
		{
			printf("玩家1赢\n");
			break;
		}
		else if ((win(a)) == 'x')
		{
			printf("玩家2赢\n");
			break;
		}
		fflush(stdin);
	}
	if(k==9)
		printf("平局\n");
	printf("game over\n");
}
  • 写回答

2条回答 默认 最新

  • xxchaveablog 2020-12-25 11:14
    关注

    挺好的,没问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器