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) < 48 Or Asc(X) > 57 Or Val(X) 1 <> X Or X <= 0 Then MsgBox "請輸入自然數,勿輸入其他字元": Exit Sub

以上能夠判別使用者輸入字元的字原碼是否為自然數(1,2,3,4…..),自然數的字元碼範圍為48~57(包含48,57)

Asc(變數),能夠將變數儲存的數值轉為字元碼

而Val(X) 1就是X/1後的整數(餘數捨去),若不等於原數,則代表X為小數

Val(X)能將X變數內的字元轉成數值,這樣才可以計算

X<=0即為X為0或所有負數,這些都不是自然數 如果X不為自然數,就會出現Msgbox提示,然後不再執行之後的敘述

If 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) < 48 Or Asc(X) > 57 Or Val(X) 1 <> X Or X <= 0 Then MsgBox "請輸入自然數,勿輸入其他字元": Exit Sub If X Mod 2 = 0 Then MsgBox "輸入數字須為奇數!": Exit Sub Cls

接下來要開始撰寫迴圈了

我們先來看看以下菱形(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) < 48 Or Asc(X) > 57 Or Val(X) 1 <> X Or X <= 0 Then MsgBox "請輸入自然數,勿輸入其他字元": Exit Sub If X Mod 2 = 0 Then MsgBox "輸入數字須為奇數!": Exit Sub If X > 17 Then MsgBox "輸入數字過大": Exit Sub Cls For a = 1 To (X + 1) / 2 For b = (X + 1) / 2 - a To 1 Step -1 Print "  "; Next b For c = 1 To 2 * a - 1 Print "*"; Next c Print "" Next a For d = (X + 1) / 2 - 1 To 1 Step -1 For e = (X + 1) / 2 - d To 1 Step -1 Print "  "; Next e For f = 2 * d - 1 To 1 Step -1 Print "*"; Next f Print "" Next d End Sub

文章分類:VB6.0|標籤:,

迴響已關閉