资源描述
实验题目
数组与指针
实验时间
2012-5-2
实验地点
Ds1407
实验成绩
实验性质
□验证性 □设计性 √综合性
教师评价:
√算法/实验过程正确; √源程序/实验内容提交 √程序结构/实验步骤合理;
□实验结果正确; □语法、语义正确; □报告规范;
其他:
评价教师签名:张彧也
一、实验目的
1.掌握一维数组和二维数组的定义和常用的操作方法;
2.掌握指向数组元素的指针的使用;
3.掌握用指向数组指针变量来表示数组的数组元素及其操作方法;
4.掌握用指针形式参数在函数间传递数组实际参数的方法。
二、实验项目内容(实验题目)
模拟“地雷游戏”。在9*9的方格中,随机布上10个“地雷”,按9行9列输出各格子的数(有雷为9,无雷为0)。在有相邻地雷的格子内进一步标出相邻地雷数。
三、源程序(实验过程或算法)
1.解题思路
(1)首先在于地雷有10个,即表示地雷分布的二维数组中有10个“9”,剩余的格子中都是“0”。
(2)用数组指针定义函数,在函数中表达并显示地雷的分布情况。
(3)判断格子中是否有为“9”,若不是,则数出相邻8个格子中“9”的个数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 11
void main()
{ void creat (int a[][N],int n);
void show (int a[][N],int n);
void js (int a[][N],int n);
int a[N][N]={0};
creat (a,N);
show (a,N);
js (a,N);
printf("\n\n\n");
show (a,N);
}
void creat (int a[][N],int n)
{
int i,j,k;
srand((unsigned)time(NULL));
for(k=0;k<n-1;)
{
i=rand()%9+1;
j=rand()%9+1;
if (a[i][j]==0)
{
a[i][j]=9;
k++;
}
}
}
void show (int a[][N],int n)
{
int i,j;
for (i=1;i<n-1;i++)
{for (j=1;j<n-1;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
void js (int a[][N],int n)
{
int i,j,p,q;
for(i=1;i<n-1;i++)
{ for(j=1;j<n-1;j++)
if(a[i][j]==0)
{ for(p=i-1;p<=i+1;p++)
{for(q=j-1;q<=j+1;q++)
if(a[p][q]==9)
a[i][j]++;
}
}
}
}
四、源程序调试过程和(或)实验分析
1.实验结果
2.实验分析
本次实验学习了二维数组的定义和使用方法,并利用指针定义函数,刚开始做时除了分析此题的原理有困难外,如何利用函数也是棘手的地方。此次实验让我充分认识到必须要加强数组元素的指针的应用。
展开阅读全文