实验题目
数组与指针
实验时间
2014年6月9日
实验地点
DS1404
实验成绩
实验性质
            设计性
教师评价:
□算法/实验过程正确;  □源程序/实验内容提交    □程序结构/实验步骤合理;
□实验结果正确;        □语法、语义正确;        □报告规范;         
其他:
                                          评价教师签名:
1、实验目的
1.掌握二维数组或多维数组的定义和初始化方法;
2.理解数组单元的存储特点及下标范围取值和访问方法;
3.掌握理解数组与指针的概念及两者之间的联系;
4.掌握指向数组元素指针的使用;
5.掌握用指向数组指针变量表示数组的数组元素及其操作方法;
6.掌握用指针形式参数在函数间传递数组实际参数的方法。
7.熟悉并掌握动态数组的创建方式及元素访问方法。
二、实验项目内容(实验题目)
模拟“地雷游戏”。在M*N的方格中,随机布上dn个“地雷”,按M行N列输出各格子的数(有雷为9(或‘*’),无雷为0)。在有相邻地雷的格子内进一步标出相邻地雷数。要求:
1)“雷区”方阵的大小M和N在程序运行过程中通过键盘输入。
2) 地雷的个数dn在程序运行中指定。
3) 地雷的个数dn必须与指定的个数相同。
实验参考提示:
    以实验书P27页上的程序为基础,加“可变动态数组(教程:例6-14,二维动态数组的创建和使用示例)”实现。
三、源程序(实验过程或算法)
#include <>
#include <>
#include <>
void main()
{
    int **pArr,m,n,dn,i,j;
    void mine(int **p,int m,int n,int dn);
    void mine_dis(int **p,int m,int n);
    printf("请输入行数和列数和地雷数:\n");
    scanf("%d,%d,%d",&m,&n,&dn);
    pArr=(int **)malloc((m+2)*sizeof(int *));
    for(i=0;i<=m+2;i++)
    pArr[i]=(int *)malloc((n+2)*sizeof(int *));
    for(i=0;i<=n+2;i++)
    {
    for(j=0;j<=n+2;j++)
    pArr[i][j]=0;
    }
    printf("随机雷区:\n");
    mine(pArr,m,n,dn);
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
        {
            printf("%5d",pArr[i][j]);
        }
        printf("\n");
    }
    printf("\n地雷分布及数目\n");
    mine_dis(pArr,m,n);
}
void mine(int **p,int m,int n,int dn)
{
    int k,i,j;
    srand(time(NULL));
    for(k=1;k<=dn;)
    { 
        for(i=0;i==0;)
        i=rand()%m;
        for(j=0;j==0;)
c语言指针实验总结        j=rand()%n;       
        if(p[i][j]==0)
        {   
        p[i][j]=9;
        k++;
        }
    }
}
void mine_dis(int **p,int m,int n)
{
    int i,j;
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
            if(p[i][j]>8)
            {
                p[i-1][j-1]++;p[i-1][j]++;p[i-1][j+1]++;
                p[i][j-1]++;            p[i][j+1]++;
                p[i+1][j-1]++;p[i+1][j]++;p[i+1][j+1]++;
            }
    }
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(p[i][j]>=9)
            {
                p[i][j]='*';
            printf("%5c",p[i][j]);
            }
            else
            printf("%5d",p[i][j]);
    }
        printf("\n");
}
}
四、源程序调试过程(或运行结果)
五、实验小结(体会):
在此实验中我学会了动态数组的使用方法,而且也感受到了指针对C语言带来的方便。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。