//二维数组练习
// 11112
//40002
//40002
//40002
//43333
#include<stdio.h>
int main()
{
int arr[5][5]={0};
int cur_row=0,cur_col=0; //当前正在处理的位置。
int delta_row=0,delta_col=1; //代表移动的方向。
int tmp_row=0,tmp_col=0;
int col=0,row=0;
///从左向右移动
for(int num=0;num<=15;num++)
{
//把数字放在当前处理的存储区里
arr[cur_row][cur_col]=num/4+1; //0-3
//计算下一次循环应该处理的位置 {
tmp_row=cur_row+delta_row;
tmp_col=cur_col+delta_col;
if(tmp_row<0||tmp_row>4||tmp_col<0||tmp_col>4)
{
//如果新位置不能使用就应该调成可以使用的位置
//调整移动方向
if(!delta_row && delta_col==1)
{
//向右改向下
delta_row=1;
delta_col=0;
}
else if(delta_row==1 && !delta_col)
{
delta_row=0;
delta_col=-1;
//向下改向左
}
else if(!delta_row && delta_col==-1)
{
//向左改向上
delta_row=-1;
delta_col=0;
}
else
{
//向上改向右
delta_row=0;
delta_col=1;
}
//重新计算下一步的位置
tmp_row=cur_row+delta_row;
tmp_col=cur_col+delta_col;
}
cur_row=tmp_row;
cur_col=tmp_col;
}
for(row=0;row<=4;row++)
{
for(col=0;col<=4;col++)
{
printf("%d ",arr[row][col]);
}
printf("\n");
}
return 0;
}