首頁  >  文章  >  web前端  >  JavaScript列印星型金字塔功能

JavaScript列印星型金字塔功能

小云云
小云云原創
2018-01-30 13:19:473419瀏覽

本文主要介紹JavaScript實現列印星型金字塔功能,結合具體實例形式分析了javascript針對輸出任意給定行數星型金字塔圖形的原理與相關實現技巧,需要的朋友可以參考下,希望能幫助到大家。

讓你用其它語言寫也是完全一樣的道理,

這題估計大家在學習C語言的時候就見過……

也就是打印以下的鬼東西:

當時候看到循環結構的時候覺得很無聊,就相當不屑這題,沒有好好仔細想想,

#因為要是放在JavaScript完全可以這樣寫,甚至不算是JavaScript,只是一個html:


#
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
&nbsp;&nbsp;*
&nbsp;***
*****
&nbsp;***
&nbsp;&nbsp;*
</body>
</html>

這裡之所以不用utf-8編碼是因為utf-8對於nbsp的處理與*的字體會導致排版錯亂,就是不是用標準的宋體字,從而導致最終的結果無法查看。

反正你出題人出多少行,我都可以複製貼上上面的內容完全可以實現,但是,今天程式設計編到一定量,有點大數據概念的時候,又見到這題,仔細思考了一下,要是出題人要求輸出二十萬行這樣中間軸對稱的星型金字塔,我TMD就呵呵了。

所以還是要徹底搞明白這個怎麼實現,雖然在實際的編程中不會出現這樣的編程,但是,據說一些無聊的面試還是會出這題,至少,後來者問你C語言的時候,問你如果輸出二十萬行這樣的中間軸對稱的星型金字塔,你還是要會,這題如果第一次做不好做的。

一、基本目標

先彈出一個輸入框,讓使用者輸入一個奇數,畢竟軸對稱需要一個奇數,
然後為了程式的健全性,必須對使用者輸入的東西進行判斷,如果輸入的不是奇數,就彈出提示,不再執行後面的程序,怎麼JavaScript判斷一個奇數,我已經在《JavaScript對數字的判斷與處理》說過,這裡不再進行贅述。

考慮到瀏覽器的負載,這裡,使用者輸入的奇數,我只允許去到189,你調大一點也可以,189由於在我的電腦裡面感覺還可以,所以才定這個數的,沒有什麼特別的意義,亂輸入的,不是故意測試的。

輸入189行,IE已經彈出「中止腳本」的提示了,但不中止也完全沒有問題!

運行結果如下:

如果是在寫C語言程式或其他程序,這個值絕對可以定大一點!

二、基本想法

這個懂就非常好寫了。

首先,我們只是要在*的左邊輸出空格,右邊就沒有必要輸出空格了,輸完*就直接換行

分兩部分,一部分是上半部i1c16ca37282dbd6134d8620c1acefdf7n/2的時候,

之所以要這樣分是因為這兩部分輸出的*號與輸出的空格數是不同的。

之後就是國中都會的找規律問題了,反正我就找到瞭如上的規律,編程運行時沒有問題,其它數學帝找到更牛B的表達式,小弟甘拜下風。

三、製作過程

程式碼非常簡單,就是條件結構與循環結構的表達,上面的想法搞懂了,不用說了。

這裡可能會有人覺得奇怪,為何我要先n++然後n%2!=0再來判斷,也就是判斷n+1是偶數來判斷n是否奇數,

這裡主要是為了迎合下面的for循環結構…


<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
</body>
</html>
<script>
var i,j,k,n;
n=window.prompt("请输入要输出的行数n,为了形成轴对称,所以你输出的必须是奇数!");
if(isNaN(n)||!n)
  alert("你输入的不是数!");
else{
  n++;
  if(n%2!=0)
    alert("你输入的不是奇数!");
  else if(n>190){
    alert("不要这么大嘛!臣妾做不到啊!");
  }
  else{
    for(i=1;i<n;i++){
      if(i<=n/2){
        for(k=n/2-i;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*i-1;j++)
          document.write("*");
          }
      else{
        for(k=i-n/2;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*(n-i)-1;j++)
          document.write("*");
        }
      document.write("<br>");
    }
  }
}
</script>

相關推薦:

JavaScript列印偵錯資訊的方法(Jquery)

Javascript列印網頁部分內容的腳本_javascript技巧

#JavaScript列印iframe內容範例程式碼_javascript技巧

以上是JavaScript列印星型金字塔功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn