| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:为什么打印不出来这个图案?
只看楼主 加入收藏
babysky_h
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-9
收藏
 问题点数:0 回复次数:2 
为什么打印不出来这个图案?
输出一个数打印这个图案,例如输入个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 
2008-01-31 17:45
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
收藏
得分:0 
程序代码:
#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;
}

这个是从雨燕姐姐(好像是这个名吧)
的一个帖子里找来的,输入矩阵的长和宽,还有最大的数。
2008-01-31 18:49
babysky_h
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-9
收藏
得分:0 
谢谢了
但是我的程序怎么输出的都是零啊?
2008-01-31 19:31
快速回复:为什么打印不出来这个图案?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024660 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved