自贡企业网站百度广告投放技巧
本博客,阅读书籍:《c语言程序设计————现代方法》
知识点:
- C99标准中二维数组的初始化方法。
- rand()和srand()的使用。
1 二维数组的初始化
详细介绍参考:《c语言程序设计————现代方法》
文章介绍参考:数组初始化
我简单介绍下:
int a[8]={0,0,2,0,3,0,0,8};//常规初始化
int a[8]={[2]=2,[4]=3,[7]=8};//C99初始化和上面等价
int a[2][2]={[0][0]=1,[1][1]=1]}//二维的单位矩阵
2 rand()和srand()的使用
文章介绍参考:rand和srand
3 程序实战
3.1 《c语言程序设计————现代方法》第八章 课后习题 9
编写程序,生成一种贯穿10*10字符数组(初始时全为‘.’)的“随机步法”。
程序必须随机地从一个元素“走到”另一个元素,每次都向上,向下,向左,或向右移动一个元素位置。
已访问过的元素按访问顺序用字母A到Z进行标记。
下面是输出示例:
3.2 程序提示:
- 不能走到数组的外面。
- 不能走到已有字母的位置。
3.3 程序:
/*****************************************《c语言————现代方法》 第八章 课后题9作者:dacao时间:2019/6/7注:今天端午,可惜回不去。****************************************/#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<stdbool.h>#define N 10
int i=0,j=0,tmp_i=0,tmp_j=0;
char maze[N][N] = {[0 ... N-1][0 ...N-1] = '.'}; //C99中二位数组的初始化void nextStep(int dirt) //下一步:tmp_i,tmp_j
{switch (dirt){case 0:tmp_i=i-1;break;case 1:tmp_j=j+1;break;case 2:tmp_i=i+1;break;case 3:tmp_j=j-1;break;}
}bool checkStep(int tmp_i,int tmp_j) //检查下一步是否合法
{bool flag=false;if((tmp_i>=0&&tmp_i<=N-1)&&(tmp_j>=0&&tmp_j<=N-1)) //下一步在矩阵范围内。{if (maze[tmp_i][tmp_j]=='.') //下一步没有走过{flag=true;}} return flag;
}bool checkLive(int i,int j) //检查当前位置是否为还有活路
{bool flag=false;if (checkStep(i-1,j)||checkStep(i+1,j)||checkStep(i,j-1)||checkStep(i,j+1)) //周围如果有一条通路,则可走flag=true;return flag;
}int main(void)
{//for(int i=0;i<N;i++)// for(int j=0;j<N;j++)// maze[i][j]='.';//maze[10][10] = {[0 ... 9][0 ...9] = '.'};srand((unsigned)time(NULL));char alpha='A';maze[i][j]=alpha; //i=j=0bool flag=true;int dirt; //方向 0,1,2,3 ;上,右,下,左;while (flag){if(checkLive(i,j)){while(1) //有活路的希望,拼尽全力找路{tmp_i=i;tmp_j=j; //这个一定要初始化的,是的每次下一步在(i,j)的周围。否则,可能向对角线移动。dirt=rand()%4; //方向nextStep(dirt); //临时的下一步if(checkStep(tmp_i,tmp_j)) //如果下一步可以走{i=tmp_i;j=tmp_j;maze[i][j]=++alpha;break; //恭喜,满血复活,进入下一步}}}else{flag=false; //没有活路,游戏终止}if(alpha>='Z') //通关,使命完成 ++alpha,到达Z,说明Z已经赋值过给数组flag=false;}for(int i=0;i<N;i++){for(int j=0;j<N;j++)printf("%2c",maze[i][j]);printf("\n");} return 0;
}
3.4程序结果
3.5 程序评价
程序存储结构不错,程序结构清晰。nice。
如果,你写出或者看见更好的程序,欢迎留言。