打印执行图形

//二维数组练习

// 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;
}

发布了22 篇原创文章 · 获赞 0 · 访问量 212

猜你喜欢

转载自blog.csdn.net/wipeout/article/details/103890208