二维数组附近遍历所有值
假如以56点为中心,上下左右近距离遍历附近值,看代码,代码把思路写出来了,边界问题暂不处理。
#include<iostream>
using namespace std;
void FindNearPos(int (*int_arr)[10] , int p_row , int p_col)
{
//p_row 代表行,p_col就代表列
static int step=0;
for(step=0;step<5;++step)
{
int i = p_row-step;
//上
for(int j=p_col-step;j<10;j++)
{
cout<<int_arr[i][j]<<"上 ";
if(i==p_row-step && j==p_col+step)
{
break;
}
}
cout<<endl;
//下
i = p_row+step;
//上
for(int j=p_col-step;j<10;j++)
{
cout<<int_arr[i][j]<<"下 ";
if(i==p_row+step && j==p_col+step)
{
break;
}
}
cout<<endl;
//左
int j = p_col-step;
//上
for(i=p_row-step;i<10;i++)
{
cout<<int_arr[i][j]<<"左 ";
if(i==p_row+step && j==p_col-step)
{
break;
}
}
cout<<endl;
j = p_col+step;
//右
for(i=p_row-step;i<10;i++)
{
cout<<int_arr[i][j]<<"右 ";
if(i==p_row+step && j==p_col+step)
{
break;
}
}
cout<<endl<<endl;
}
}
int main()
{
int arr[10][10] ={0};
int m=0;
for(int i=0;i<10;++i)
{
for(int j=0;j<10;++j)
{
m++;
arr[i][j] = m;
}
}
for(int i=0;i<10;++i)
{
for(int j=0;j<10;++j)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
//要查找的坐标
int k=5;
int t=5;
FindNearPos(arr , k , t);
return 0;
}