创建时间:2013年6月4日星期二实验题目数组与指针实验时间2013年6月4日实验地点DS1421实验成绩实验性质□验证性□设计性√综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范;其他:评价教师签名:一、实验目的1、掌握二维数组或多维数组的定义和初始化方法;2、理解数组单元的存储特点及下标范围取值和访问方法;3、掌握理解数组与指针的概念及两者之间的联系;4、掌握指向数组元素指针的使用;5、掌握用指向数组指针变量表示数组的数组元素及其操作方法;6、掌握用指针形式参数在函数间传递数组实际参数的方法。7、熟悉并掌握动态数组的创建方式及元素访问方法。二、实验项目内容(实验题目)模拟“地雷游戏”。在M*N的方格中,随机布上dn个“地雷”,按M行N列输出各格子的数(有雷为9(或‘*’),无雷为0)。在有相邻地雷的格子内进一步标出相邻地雷数。要求:1)“雷区”方阵的大小M和N在程序运行过程中通过键盘输入。2)地雷的个数dn在程序运行中指定。3)地雷的个数dn必须与指定的个数相同。实验参考提示:以实验书P27页上的程序为基础,加“可变动态数组”实现。三、源程序(实验过程或算法)对实验报告内容所述的题目进行分析求解,得出如下C源程序:#includestdio.h#includestdlib.h#includetime.h创建时间:2013-6-4voidmain(){voidPrintArray(int**a1,ints,intn);voidMakeArray(int**a1,ints,intn,intt);voidCountArray(int**a1,ints,intn);introw,col,t;int**pArr,i;printf(输入地雷的行和列以及地雷数:);scanf(%d,%d,%d,&row,&col,&t);pArr=(int**)malloc(row*sizeof(int*));for(i=0;irow;i++)pArr[i]=(int*)malloc(col*sizeof(int));for(i=0;irow;i++)for(intj=0;jcol;j++)pArr[i][j]=0;MakeArray(pArr,row,col,t);PrintArray(pArr,row,col);CountArray(pArr,row,col);}inti,j,k,count=0;voidMakeArray(int**a1,ints,intn,intt){srand(time(NULL));do{k=rand()%(s*n);if(a1[k/n][k%n]!=9){a1[k/n][k%n]=9;count++;}}while(countt);}voidPrintArray(int**a1,ints,intn){for(inti=0;is;i++){for(intj=0;jn;j++)printf(%4d,a1[i][j]);printf(\n);}}voidCountArray(int**a1,ints,intn){inti,j,count;创建时间:2013-6-4for(i=0;is;i++){for(j=0;jn;j++){count=0;for(intl=0;ls;l++)for(intt=0;tn;t++)if((i-l)*(i-l)+(j-t)*(j-t)=2&&(i-l)*(i-l)+(j-t)*(j-t)!=0&&a1[l][t]==9)count++;printf(%4d(%d),a1[i][j],count);}printf(\n);}}四、源程序调试过程(或运行结果)对程序编译、连接、运行,得到如下结果:创建时间:2013-6-4五、实验小结(体会):1、掌握了数组元素指针的使用。2.2、握了数组的定义、初始化、以及数组元素的引用方法3、掌握了顺序文件在程序程序设计中的应用