VB顯示星號(*)菱形
要如何使用VB來顯示星號(*)菱形呢?
聽起來這個似乎很難,但其實很簡單喔!
只需要兩個外for-next迴圈,裡面各兩個for-next迴圈即可!
廢話不多說,快來做做看吧!
相關文章:For Next 計次執行迴圈的用法
首先開啟一個可愛的小表單(Form1)
在上面的右下角佈置一個小按鈕(Command1)吧!
接著更改Command1的Caption的屬性,提示使用者這個按鈕的功能
再來就開始在Private Sub Command1_Click()撰寫程式碼吧!
首先我們要給使用者輸入其想要繪製的菱形最大星星數
我們就用InputBox保留字
利用變數X儲存,使用者輸入的數字
X = InputBox(“請輸入數字”)
為了防止使用者惡搞,隨便輸入,我們需要幾個If判別式
If X = “” Then Exit Sub
以上判別式能夠判別使用者有無輸入資料。如沒有,就不再執行之後的敘述
If Asc(X) 57 Or Val(X) 1 X Or X
以上能夠判別使用者輸入字元的字原碼是否為自然數(1,2,3,4…..),自然數的字元碼範圍為48~57(包含48,57)
Asc(變數),能夠將變數儲存的數值轉為字元碼
而Val(X) 1就是X/1後的整數(餘數捨去),若不等於原數,則代表X為小數
Val(X)能將X變數內的字元轉成數值,這樣才可以計算
XIf X Mod 2 = 0 Then MsgBox “輸入數字須為奇數!”: Exit Sub
以上判別式能夠判別X是否為奇數
X mod 2 即為X/2後的餘數,若等於0即為偶數
接著我們再撰寫一個能夠清除表單的保留字
Cls
綜合以上程式碼,目前應寫出如下程式
X = InputBox(“請輸入數字”)
If X = “” Then Exit Sub
If Asc(X) 57 Or Val(X) 1 X Or X
接下來要開始撰寫迴圈了
我們先來看看以下菱形(x=7,7×7三角形為例)
—*
—***
–*****
*******
–*****
—***
—*
你看出來了嗎?
這菱形可以切成兩半,兩個三角形
會程式的人當然不會想說要縱切,那是不可行的
因此我們就來橫切吧!
—*
—***
–*****
*******
——–
–*****
—***
—*
成功切成兩半,發現上半部的三角形是輸入數字的(x+1)/2行(x=7,所以是4行)
因此我們先撰寫外迴圈吧
For a = 1 To (X + 1) / 2
內迴圈
Next a
接下來就是上半部每一行內的程式(內迴圈),看看規律吧
第一行共有3個空格,而第二行只剩下2個空格,第三行剩下1個空格,第四行沒空格了 (PS!以上圖7X7菱形為例)
所以我們可以寫出以下程式碼
For b = (X + 1) / 2 – a To 1 Step -1
Print ” “;
Next b
Print後加個分號(;),能夠讓程式不會換行
再來看看星號(*)吧
1~4行,可以發現,星號數量以+2遞增
因此可以撰寫程式如下
For c = 1 To 2 * a – 1
Print “*”;
Next c
一行(內迴圈)執行完成後,當然要換下一行,所以須寫以下程式
Print “”
如此一來,上半部圖形就完成了
接著看看下半部吧
—*
—***
–*****
*******
——–
–*****
—***
—*
我們可以發現,下半部共(X+1)/2-1行(X=7,共3行)
又因星號呈遞減分布,所以需倒過來寫
For d = (X + 1) / 2 – 1 To 1 Step -1
內迴圈
Next d
再來觀察空格數
第一行是1格,第二行是2格,第三行是3格
因此可寫出以下程式
For e = (X + 1) / 2 – d To 1 Step -1
Print ” “;
Next e
再來是星號數量,可發現每下一行,星號呈-2遞減
所以程式如下
For f = 2 * d – 1 To 1 Step -1
Print “*”;
Next f
再來要換行
Print “”
這樣就完成了
還要加個X上限,不然會破壞美觀
綜合以上所有程式,最後寫出來的程式應如下,其實程式碼還是會因人而異,因為每個人的邏輯思考不同
Private Sub Command1_Click()
X = InputBox(“請輸入數字”)
If X = “” Then Exit Sub
If Asc(X) 57 Or Val(X) 1 X Or X