#include <stdio.h>
//建立棋盘
void createBoard1(void ***p,int n)
{
*p = (void **)malloc(sizeof(void*)*n);//申请n*n的空间
for(int i =0;i<n;i++)
{
(*p)[i] = (void *)malloc(sizeof(char)*n);
memset((*p)[i],'o',n);
}
return 0;
}
//下子
void initBoard(char***p,int n)
{
time_t ts;
srand((unsigned int)time(&ts));//时间种子
for(int s=0;s<n;)//下n个棋子
{
int i =rand()%n;
int y =rand()%n;//随机生成小于n的随机数
if((*p)[i][y] !='x')
{
(*p)[i][y] ='x';
s++;
}
else
;
}
}
//判断棋盘好坏
int printBoard(char**p,int n)
{
int xi = 0;//标识符
int xy = 0;
for(int i = 0; i <n ;i++)
{
int sumx = 0;//记录‘x’的个数
int sumy = 0;
for(int j = 0;j<n;j++)//搜索行上x的个数
{
if(p[i][j]=='x')
sumx ++;
if(sumx==2)
{
xi = 1;
break;
}
}
for(int j = 0;j<n;j++)//搜索列上的x数
{
if(p[j][i]=='x')
sumy ++;
if(sumy==2)
{
xy = 1;
break;
}
}
}
for(int i = 0;i<n;i++)//打印棋盘
{
for(int j = 0;j <n ;j++)
{
printf("%c ",p[i][j]);
}
putchar(10);
}
if(xy==1||xi ==1)//判断棋盘的好坏
printf("%s\n","good");
else
printf("%s\n","not good");
return 0;
}
//销毁棋盘
int destroyBoard1(void ***p,int n)
{
for(int i = 0 ;i<n;i++)
{
free((*p)[i]);
}
free(*p);
}
int main(void)
{
int n;
printf("input n\n");
scanf("%d",&n);
char **p = NULL;
createBoard1(&p,n);
initBoard(&p,n);
printBoard(p,n);
destroyBoard1(&p,n);
return 0;
}
字符串除去空格

最新推荐文章于 2025-07-02 15:15:57 发布