一位正在初学C++的同事,突然问我一个问题,说用打印函数,只用for循环,怎么输出一个菱形?
想起来这是以前学编程时,非常基础的一个问题
本来以为很简单,于是随便想了一下,发现还真没想象那么简单额
于是乎,努力仔细的想想,于是下面的答案就出来了
当然是Flash写的:
我这个用了3个for循环,不知道有没有用的for循环更少的方法?
(注意哦,只能用for循环和基本的运算)
var k:int, result:String = "", sum:int = 7;
var s:int = Math.abs(- sum / 2);
for(var i:int = 0; i < sum; i ++){
  var n:int = Math.abs(s - i);
  var t:int = sum - n * 2;
  for(k = 0; k < n; k ++){
    result += " ";
  }
  for(k = 0; k < t; k ++){
    result += "*";
  }
  result += "\n";
}
trace(result);

输出结果:
  *
 ***
 *****
*******
 *****
 ***
  *

[最后修改由 sunbright, 于 2010-06-10 15:51:28]
评论Feed 评论Feed: http://www.xiaos8.com/feed.asp?q=comment&id=574
怎么一页才显示这么点文章?点快速检索查看更多的文章: 显示全部 | 评论: 13 | 排序 | 观看的: 587
小4*
[ 2010-06-10 22:51:52 ]
如果可以用Array的话应该会简单点...
FlashSoft*
[ 2010-06-11 09:49:10 ]
<script>
var colNum = 9;
var middleNum = space = Math.floor(colNum / 2);
for(var i=0;i<colNum;i++){
  document.write(new Array(space + 1).join('&nbsp;') + new Array((middleNum - space) * 2 + 2).join('*') + '<br/>');
  space = i < colNum / 2 && space > 0? space - 1: space + 1;
}
</script>

用了个无耻的方法

游客*
[ 2010-06-11 09:55:30 ]
[表情04]
sunbright
[ 2010-06-11 10:10:16 ]
如果能用各种条件语句,还有各种类型
那这太简单了。。而且还会有各种高端的答案。。
可惜这题的题目就是出在只能用for循环
FlashSoft*
[ 2010-06-11 10:28:59 ]
那这算是纯数学计算么?
正则下面那个

<script>
var colNum = 9;
document.write(String(new Array(colNum * colNum + 1).join('.')).replace(/./g, function(a, b) {
  var line = Math.floor(b / colNum);
  var col = b % colNum;
  var middleCol = Math.floor(colNum / 2);
  var absNum = Math.abs(middleCol - line);
  return (col < absNum || col >= colNum - absNum ? '&nbsp;': '*') + (col == colNum - 1?'<br/>':'');
}));
</script>
<script>
var s = '';
for(var i = 0; i < new Array(colNum * colNum).length; i ++ ){
  s += (function(b) {
    var line = Math.floor(b / colNum);
    var col = b % colNum;
    var middleCol = Math.floor(colNum / 2);
    var absNum = Math.abs(middleCol - line);
    return (col < absNum || col >= colNum - absNum ? '&nbsp;': '*') + (col == colNum - 1?'<br/>':'');
  })(i);
}
document.write(s);
</script>

FlashSoft*
[ 2010-06-11 10:32:54 ]
第二个里的for条件应该是,脑子蒙了

<script>
var s = '';
for(var i = 0; i < colNum * colNum; i ++ ){
  s += (function(b) {
    var line = Math.floor(b / colNum);
    var col = b % colNum;
    var middleCol = Math.floor(colNum / 2);
    var absNum = Math.abs(middleCol - line);
    return (col < absNum || col >= colNum - absNum ? '&nbsp;': '*') + (col == colNum - 1?'<br/>':'');
  })(i);
}
document.write(s);
</script>

nic*
[ 2010-06-11 16:35:04 ]
哈哈,以前学基础的时候就是学这些东东,但的确不那么简单,还有很多的,感觉上都是一些算法的问题!
游客*
[ 2010-06-26 13:34:33 ]
请教一个问题,我们现在有个项目是把swf包在c++内,使用swf的ExternalInterface来与c++通讯,但现在打算改成AIR2,怎么让AIR与C++通信呢?网上找到的例子都是只能通讯一次的,或者使用aperture framework, 应该采取什么方式呢?谢谢!
sunbright
[ 2010-06-26 22:06:30 ]
这个我没试过。。。不过AIR其实内部有个dll文件,也许研究这些对你可能会有用吧
sunbright
[ 2010-06-26 22:07:59 ]
另外我这有个AIR打包工具
http://www.xiaos8.com/article.asp?id=501
原理就是用Flex的AIR调试工具,直接启动dll,让他可以直接运行的
你可以研究试试,我能提供的,就这么多了
游客*
[ 2010-07-07 16:03:26 ]
#include<stdio.h>
int main()
{
  int i,j,b,k1,k2;
  b = 7;
  k1 = k2 = 0;
  for (j = 0; j < b; j++)
  {
    if (j < b / 2)
    {
      k1 = b / 2 - j;
      k2 = b / 2 + j;
    }
    else
    {
      k1 = j - b / 2;
      k2 = b - 1 - k1;
    }
    for (i = 0; i < b; i++)
    {
      if (i >= k1 && i <= k2)
        printf("*");
      else
        printf(" ");
    }
    printf("\n");
  }
}
游客*
[ 2010-07-07 16:05:08 ]
没看清题目,无视一下我吧。我是楼上的
sunbright
[ 2010-07-07 17:56:36 ]
我成全你 [表情02]

发表
表情图标
[表情01] [表情02] [表情03] [表情04] [表情05] [表情06] [表情07] [表情08] [表情09] [表情10] [表情11] [表情12] [表情13] [表情14] [表情15] [表情16] [表情17] [表情18] [表情19] [表情20] [表情21] [表情22] [表情23] [表情24]
UBB代码
转换链接
表情图标
悄悄话
昵称:   验证码: *
 
快速浏览
类别
标题
评论/流量
日期