二维空间的创建与使用

来源:互联网 时间:1970-01-01


#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;}



相关阅读:
Top