介绍
本文采用的二维数组通过行于列的操作进行准确赋值,例题名字:扫雷地图
制作一个 int arr[10][10] 的二维数组:
扫雷的地图 有以下几颗雷(3,4) (7,8) (5,2) (1,0) (行,列)要求
让二维数组每一个元素都赋值为0;然后地雷的位置赋值为-1
雷周围的位置(一圈)赋值为1最后打印出地图
源码:
#include<stdio.h>
#include<stdlib.h>
int arrly[10][10];
void location(int x,int k)
{
//将地雷位置赋值到 x(行) and k(列) 中
/****************************************************************************************************
通过 行和列 的控制对地雷周围进行赋值操作
此处为了防止溢出操作,是"从下往上"and"从右往左"进行逐行逐列递减的赋值
所以我的算法步骤是:
先将"x和k"都各加一位,然后在此的"x - 2"and"k - 2"是因为我是"从下往上"and"从右往左"进行逐行逐列递减的赋值
*****************************************************************************************************/
for (int i = x + 1; i > x - 2; --i)//行操作
{
for (int j = k + 1; j > k - 2; --j)//列操作
{
//if判断是否是地雷位置,如果是则赋值 -1,
if (i == x && j == k)
arrly[x][k] = -1;
//else if 进行判断是否大于等于0防止溢出操作,如果是则赋值 1
else if (i >= 0 && j >= 0 && i < 10&& j < 10)
arrly[i][j] = 1;
}
}
}
int main()
{
//初始化二维数组全部赋值为0
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < 10; ++j)
{
arrly[i][j] = 0;
}
}
//传递埋地雷位置到location函数中
int r = 1, w = 0;
location(r, w);
r = 3, w = 4;
location(r, w);
r = 5, w = 2;
location(r, w);
r = 7, w = 8;
location(r, w);
//打印地雷位置
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < 10; ++j)
{
printf("%d\t", arrly[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}