当前位置: 代码迷 >> C语言 >> 为什么打印不出来这个图案?
  详细解决方案

为什么打印不出来这个图案?

热度:135   发布时间:2008-01-31 17:45:39.0
为什么打印不出来这个图案?
输出一个数打印这个图案,例如输入个3,就如图所示  是个蛇形图案 我的代码怎么做了,请高手指教
1 2 3
8 9 4
7 6 5
#include <stdio.h>
main()
{
   int i,j,n,k,t=1,a[20][20];
    printf("please input a number between 0 to 20\n");
    scanf("%d",&n);
   while(t<=n*n)
    {for(i=0;i<n;i++)
      for(j=i;j<n;j++);
       {a[i][j]=t;
          t++;
      }
      for(k=i+1;k<n-i;k++)
       {a[k][j]=t;
         t++;
      }
       for(j=k-1;j>=i;j--)
       {a[n-i][j]=t;
        t++;
       }
       for(j=k-1;j>i;j--)
        {a[i][j]=t;
          t++;
          }
        }
    for(i=0;i<n;i++)
     for(j=0;j<n;j++)
      printf("%3d",a[i][j]);
    getch();
}
搜索更多相关的解决方案: 图案  打印  蛇形  input  

----------------解决方案--------------------------------------------------------
程序代码:
#include <stdio.h>
//SET_XY 获取方向增量
#define SET_XY(x,y,d) x=sym[d][0], y=sym[d][1]
int main()
{
    int m, n, t;
    int sym[4][2]={0,-1,
         1,0,
           0,1,                 
                   -1,0,
            }; //连续化处理的关键
               //依次对应:上,右,下,左。

    while(scanf("%d%d%d", &m, &n, &t) != EOF)
    {
        int map[32][32] = {0}; //初始化数据
        int x, y, dx, dy, d, nStep = 2;
        for(x = 1, y = m + 1; x <= n; x++) //设置上下边界
            map[x][0] = map[x][y] = -1;
        for(x = 1, y = n + 1; x <= m; x++) //设置左右边界
            map[0][x] = map[y][x] = -1;
        x = y = 1; d = 1 + (t == 0);
        SET_XY(dx, dy, d);
        if(map[y+dy][x+dx]) //设置起始方向
        {
            d = (d+1+((t==0)<<1))%4; //d就是方向
            SET_XY(dx, dy, d);
        }
        for(map[1][1] = 1;;nStep++) //螺旋遍历
        {
            x += dx , y += dy;
            map[y][x] = nStep;
            if(map[y+dy][x+dx]) //碰到边界或者有数的地方
            {
                d= (d+1+((t == 0)<<1))%4; //改变方向
                SET_XY(dx, dy, d);
                if(map[y+dy][x+dx])break; //无处可走,退出
            }
        }
        for(y = 1; y <= n; y++) //输出结果
        {
            for(x = 1; x <= m; x++)
                printf("%4d",map[y][x]);
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

这个是从雨燕姐姐(好像是这个名吧)
的一个帖子里找来的,输入矩阵的长和宽,还有最大的数。
----------------解决方案--------------------------------------------------------
谢谢了
但是我的程序怎么输出的都是零啊?
----------------解决方案--------------------------------------------------------
  相关解决方案