A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© su27 初级黑马   /  2014-9-16 17:56  /  1720 人查看  /  13 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我这里有段空心菱形上半部分的js代码  //空心菱形n=3  totle    *    i
  /*   *                    3   3    1
      * *                   4   2/4   2
     *   *                  5   1/5   3
      * *                   4   2/4   
        *                    3   3
  */
//思路大概如n为从开始到中间的行数
//每行分别要输出i+2轮
//每行分别在j=n-i+1和j=i+2的时候打印*剩余的打印空格
  var n=window.prompt("输入数字");
  for (var i=1;i<=n ;i++ )//大循环循环输出相应的行数
  {for (var j=1;j<=i+2 ;j++ )//小循环输出一行中每一个元素
          {if ((j==n-i+1)||(j==i+2))
                  {document.write("*");//判断每一个位置是否需要输入*
                  }
           else{document.write("&nbsp");}
          }
   document.write("<br/>");
  }


运行结果:

n=10 n=5可以看出总数上少打了一个星
帮我看看这问题在哪

13 个回复

倒序浏览
这贴可以终结了, 版主看着删吧,看了几十分钟没看出问题,发上来就找到了,这错误太低级了
回复 使用道具 举报
看看我的:
  1. <html>
  2.   <head>
  3.    <style type="text/css">
  4.    #div1{white-space:pre;}
  5.    </style>
  6.    <script>
  7.    window.onload = function()
  8.    {
  9.            var oDiv = document.getElementById('div1');
  10.            var asterisk = '*';
  11.            //星型之间的空格
  12.            var bSpacing = ' ';
  13.            //每一行的内容
  14.            var sLine = '';
  15.            //保存每一行内容的数组
  16.            var aCon = [];

  17.            //设定每一行的内容,并保存到aCon数组
  18.            for(var i=1; i<10; i++)
  19.            {
  20.                    if(i==1) sLine = asterisk;
  21.                    if(i==2) sLine = asterisk+bSpacing+asterisk
  22.                    if(i>=3)
  23.                    {
  24.                            bSpacing += '  ';
  25.                            sLine = asterisk+bSpacing+asterisk;
  26.                    }

  27.                    //如果aCon数组不为空,每一行sLine的前面加1个空格
  28.                    if(aCon.length != 0)
  29.                    for(var j=0; j<aCon.length; j++)
  30.                    {
  31.                            aCon[j] = ' '+aCon[j];
  32.                    }
  33.                    //将新行添加到数组
  34.                   aCon.push(sLine);
  35.            }

  36.            //打印每一行的内容
  37.            for(var i=0; i<aCon.length; i++)
  38.            {
  39.                    oDiv.innerHTML += aCon[i]+'<br/>';
  40.            }

  41.            for(var i=aCon.length-2; i>=0; i--)
  42.            {
  43.                    oDiv.innerHTML += aCon[i]+'<br/>';
  44.            }
  45.    }
  46.    </script>
  47.   </head>
  48.   <body>
  49.     <div id="div1"></div>
  50.   </body>
  51. </html>
复制代码
回复 使用道具 举报
。。。。
回复 使用道具 举报
每天一点小进步
回复 使用道具 举报

一看便知是高手,高手求罩:lol
回复 使用道具 举报
天邃任我桓 发表于 2014-9-18 00:26
一看便知是高手,高手求罩

过奖了,欢迎多多交流
回复 使用道具 举报
su27 初级黑马 2014-9-20 23:23:11
8#
天邃任我桓 发表于 2014-9-18 00:26
一看便知是高手,高手求罩

嬉笑大方,惭愧惭愧
回复 使用道具 举报
su27 初级黑马 2014-9-20 23:28:37
9#
调好了
  1. var n=window.prompt("输入数字");
  2.   n=parseInt(n);
  3.   for (i=1;i<=n ;i++ )
  4.   {//循环输上半部分和中间一行
  5.           for (var j=1; j<=n+i-1 ;j++)//在相应的位置上输出*其余位置输出“ ”
  6.           {if (j==n-i+1||j==n+i-1)
  7.                   {document.write("*");
  8.                   }
  9.            else{document.write("&nbsp");
  10.            }
  11.       }
  12.    document.write("<br/>");
  13.   }
  14.   for (i=n-1;i>=1 ;i-- )
  15.   {//输出下半部分
  16.           for (var j=n+i-1; j>=1 ;j--)
  17.           {if (j==i+i-1||j==1)
  18.                   {document.write("*");
  19.                   }
  20.            else{document.write("&nbsp");
  21.            }
  22.       }
  23.    document.write("<br/>");
  24.   }
复制代码
回复 使用道具 举报
su27 初级黑马 2014-9-20 23:32:52
10#

这个好,不用计算在哪个位置放置*直接在头一行中间加两个空格就好,还用玩儿的那么高端,果然高手
回复 使用道具 举报
su27 发表于 2014-9-20 23:32
这个好,不用计算在哪个位置放置*直接在头一行中间加两个空格就好,还用玩儿的那么高端,果然高手 ...

互相学习啦
回复 使用道具 举报
看出来顺便把结果也发一下啊。给下面思考的同学一个参考。
回复 使用道具 举报
qq8921310 发表于 2014-9-21 00:17
看出来顺便把结果也发一下啊。给下面思考的同学一个参考。

复制源代码,粘贴到后缀名为.html的文件中,用浏览器打开就可以看到结果了,这样更直观些
回复 使用道具 举报
su27 初级黑马 2014-9-21 11:00:13
14#
qq8921310 发表于 2014-9-21 00:17
看出来顺便把结果也发一下啊。给下面思考的同学一个参考。

我的代码在9楼
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马