| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖
标题:问题``问题
只看楼主 加入收藏
fzz8026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-17
结帖率:0
收藏
已结贴  问题点数:10 回复次数:11 
问题``问题
  我刚学C请教个题
    *
  * * *
* * * * *
  * * *
    *
这用循环怎么做?
上面3行还可以再下来减的怎么用上面一个循环表示出来
前辈前辈们给简单的编下
2009-11-17 16:22
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:1 
万能的输出
puts

我可好玩啦...不信你玩玩^_^
2009-11-17 16:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:1 
请问pyg,我要输出:
123456
131417
216158
111019
怎么办?其实就是将12345678910111213……从外向内螺旋排列,要求输入宽度,高度,螺旋方向(0顺时针,1逆时针)和起始的数字,输出对应矩形。
上面的矩形是由6 4 0 1输出的。

C语言不是记事本,那些题目也不是考你的IO输出的。


[ 本帖最后由 StarWing83 于 2009-11-17 16:46 编辑 ]

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-11-17 16:45
永远不懂
Rank: 1
来 自:徐州
等 级:新手上路
帖 子:35
专家分:9
注 册:2009-11-4
收藏
得分:1 
#include <stdio.h>
void main()
{
    int i,j,k,x,y,z;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(x=1;x<=2;x++)
{
for(y=1;y<=x;y++)
printf(" ");
for(z=1;z<=5-2*x;z++)
printf("*");
printf("\n");
}
}
应该就是这个答案
2009-11-17 18:33
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:1 
StarWing83你的题目有点意思能不能把你的那个编出来看看

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2009-11-17 21:04
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
pgy,我们一起动脑~加动手
2009-11-17 21:48
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
恩,大家加油,我已经想到一种本地(in place)方法和非本地方法,虽然我还没写代码……

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-11-17 22:12
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
来晚了,才发现有call me
—————————————————————————————————————————

123456
131417
216158
111019
怎么办?其实就是将12345678910111213……从外向内螺旋排列,要求输入宽度,高度,螺旋方向(0顺时针,1逆时针)和起始的数字,输出对应矩形。
上面的矩形是由6 4 0 1输出的。
看了1个多小时,做不出来,有下面的一些思路,如果麻烦的话直接给我代码吧,我自己去研究,最好带点注释,谢谢。
——————————————————————————————————————————

首先,我想把1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1变成
        1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1
于是有了下面
main()
{
    int i,j,a[(6*4-10)/2+10],b[6*4];/*即a[17],b[24]*/
    for(i=0,j=0;i<17;i++,j++)
        {
            a[i]=i;
            if(a[i]<10)
                b[j]=a[i];
            else
                {b[j]=a[i]/10;b[j+1]=a[i]%10;j++;} /*这个循环就是让2位数拆开变为2个数*/
        }
    for(j=0;j<24;j++)
        printf("%d",b[j]);
}
————————————
得到b[6][4]就是螺旋矩阵的元素,然后我就想再把b矩阵“螺旋”的赋给c[6][4]
问题:怎么让矩阵螺旋
00 01 02 03 04 05
10 11 12 13 14 15
20 21 22 23 24 25
30 31 32 33 34 35  /*矩阵坐标图*/
思路1:b[i][j],i不变,j++;j到达上限/*5*/时,j不变,i++;i上限时,i不变,j--;j到下限时,j不变,i--;后面往内螺旋就是一直循环。其中,遇到上限或下限时,上限和下限值都减1。思路明确了,可是我写的时候不知道如何控制下标
思路2:
1 2
4 3

1 2 3
8 9 4
7 6 5
看这2个矩阵,我感觉可以把上一个矩阵的3移到2后面,4也跟着螺旋过去,就像一条链子摆过去一样。这样,我就觉得n*n矩阵是由n-1*n-1矩阵摆过来的,又想到试试递归,写的时候又不知道怎么控制下标了。
————————————————————————————————————————————————
我看我得多想几个小时了
ps:熬夜的话早上5点40有狮子座流星雨
不知道流星雨姐姐会不会去看流星雨...

[ 本帖最后由 pgy 于 2009-11-17 23:56 编辑 ]

我可好玩啦...不信你玩玩^_^
2009-11-17 23:50
fzz8026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-17
收藏
得分:0 
谢谢大家指导
一起讨论讨论
2009-11-18 12:25
fzz8026
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-17
收藏
得分:0 
以下是引用永远不懂在2009-11-17 18:33:12的发言:

#include <stdio.h>
void main()
{
    int i,j,k,x,y,z;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(x=1;x<=2;x++)
{
for(y=1;y<=x;y++)
prin ...
这个输不出来东西啊,大哥
2009-11-18 12:37
快速回复:问题``问题
数据加载中...
 
   



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

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