某屠宰廠每天決定宰殺若干頭豬(1<=n<=100),把每天待宰殺的豬按順序編號后排成一排,每次將排在單號位置的豬殺掉;然后把剩下的豬按上一次相對的位置排好,重新編號,再次將排在單號位置的豬殺掉;以后每次重復(fù)前面的過程,直到僅剩下一頭豬時(shí)停止宰殺,將這頭幸運(yùn)的豬放回;有一頭豬聰明的豬,每天都能躲避被屠宰。利用VB編寫一個(gè)程序,根據(jù)每天殺豬的數(shù)量,求出當(dāng)天這頭聰明的豬的原始編號。VB程序界面設(shè)計(jì)如下:
控件屬性設(shè)置如下:
對象 |
屬性 |
屬性值 |
說明 |
Form1 |
Caption |
幸運(yùn)的豬 |
窗體的標(biāo)題 |
Label1 |
Caption |
當(dāng)天要?dú)⒇i的數(shù)量 |
標(biāo)簽顯示的文字 |
Label2 |
Caption |
幸運(yùn)豬的原始編號 |
標(biāo)簽顯示的文字 |
Text1 |
Text |
空白 |
文本框的文本 |
Text2 |
Text |
空白 |
文本框的文本 |
Image1 |
Picture |
Pig.gif |
顯示的圖片 |
Command1 |
Caption |
計(jì)算 |
按鈕顯示的文字 |
(1)完成以上功能的程序代碼如下,請?jiān)跈M線處填入正確的語句。
Private Sub Command1_Click ____
Dim sum,i,pos,last,count As Integer
Dim a(1 To 100)As Integer
①
sum=Val(Text1.jye.ai)
sum=Val(Text1.jye.ai)
For i=1 To sum
a(i)=1'初始狀態(tài)為1表示還沒被殺掉
Next i
count=0
Do while ②
count+1<sum
count+1<sum
'要?dú)⒌魋um-1頭豬
Pos=0
For i=1 To sum
If a(i)<>0 Then
pos=pos+1'pos表示報(bào)數(shù)
If ③
pos MOD 2=1
pos MOD 2=1
Then'報(bào)到奇數(shù)的豬被屠宰
count=count+1
a(i)=0
End If
End If
Next i
Loop
For i=1 To sum
If a(i)=1 Then
Text2-Text=Str(i)
End If
Next i
End Sub
(2)屠宰場每天有100頭豬被屠宰,這頭聰明的豬,需要初始排在
64
64
號位置上才能避免被屠宰掉。
(3)還是這100頭豬,如果屠宰場改變殺豬規(guī)則,第一次殺奇數(shù),第二次殺偶數(shù),第三次殺奇數(shù),第四次殺偶數(shù)……,依次輪流,100頭豬中幸運(yùn)的豬的原始編號是
86
86
。