【加試題】n個數(shù)據(jù)的冒泡排序需要經(jīng)過n-1遍加工,每一遍加工自下而上比較相鄰兩個數(shù)據(jù),把較小者交換到上面.小劉發(fā)現(xiàn):當(dāng)某一遍加工過程中沒有數(shù)據(jù)交換,說明數(shù)據(jù)已經(jīng)有序,無需進一步加工.為此,小劉對算法進行優(yōu)化,編寫了一個VB程序,功能如下:運行程序時,在列表框List1中顯示排序前數(shù)據(jù),單擊“排序”按鈕Commaiid1,在列表框List2 中顯示這些數(shù)據(jù)按升序排序后的結(jié)果,在標(biāo)簽Label3中顯示排序過程的加工遍數(shù).運行效果如圖所示.
實現(xiàn)上述功能的VB代碼如下,但加框處代碼有錯,請改正.
Dim a(1To 8)As Integer
Dim n As Integer
Private Sub Form_Load( ?。?/div>( ?。?/div>
'n=8,排序前數(shù)據(jù)存儲在數(shù)組a中,并在列表框Listl中顯示
'代碼略
End Sub
Private Sub Command1_Click( )( ?。?/div>
Dim flag As Boolean'flag值為True表示一遍加工中發(fā)生過交換
i=1
flag=True
Do While'(1)i<=n-1Or flag=True
flag=False
For j=n To i+1Step-1
If a(j)<a(j-1)Then
k=a(j):a(j)=a(j-1):a(j-1)=k
flag=True
End If
Next j
i=i+1
Loop
Str(i)
Label3.Caption=“排序過程的加工遍數(shù)為“+'(2)
For i=1To n
List2.AddItem Str(a(i))
Next i
End Sub.【答案】( ?。唬ā 。?/div>【解答】【點評】聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。發(fā)布:2024/4/20 14:35:0組卷:14引用:5難度:0.1
相似題
-
1.如圖VB應(yīng)用程序界面所示,下列關(guān)于類與對象的說法正確的是( ?。?br />
發(fā)布:2024/11/3 16:0:2組卷:5引用:2難度:0.7
-
2.編寫VB程序,實現(xiàn)如下功能:對于任意一個正整數(shù),如果是奇數(shù),則乘3加1,如果是偶數(shù),則除以2,得到的結(jié)果再按照上述規(guī)則重復(fù)處理,最終總能夠得到1.如,假定初始整數(shù)為5,計算過程分別為16、8、4,、2、1.
程序要求輸入一個整數(shù)到Text1,單擊命令按鈕Command1,將經(jīng)過處理得到1的過程輸出到List1上面,運行效果如圖2所示.
(1)如果將窗體左上角標(biāo)題“Form1”改為“角谷猜想”,可將Form1的 屬性的屬性值改為“角谷猜想”.
(2)為實現(xiàn)上述功能,請在橫線處填入合適代碼.
Private Sub Command1_Click ( ?。?br />Dim x As Long
x=Val(Text1.Text)'將text1中的內(nèi)容賦值給x
Do While x<>1
If Then'x為奇數(shù)的情況
x=x*3+1
Else'x為偶數(shù)的情況
x=
List1.AddItem“x=“& Str(x)'將x的變化添加到list1上
Loop
End Sub
橫線處①應(yīng)填入 ,劃線②應(yīng)填入
(3)運行程序是,發(fā)下如2圖所示錯誤,原因可能是 (選填:程序缺少Do/程序缺少End If).
發(fā)布:2024/10/26 17:0:2組卷:7引用:1難度:0.1
-
3.日期判斷:從文本框Text1輸入一個8位數(shù)字表示的日期,其中第1到4位表示年(第1位確定不為零),第5到6位表示月,第7到8位表示日.單擊“判斷”按鈕,判斷該日期是否合法,將結(jié)果依次輸出到列表框List1.程序界面如下圖所示:
提示:年份值符合下列兩種情況之一的是閏年.
1.年份是4的倍數(shù),但不是100的倍數(shù);
2.年份是400的倍數(shù).
(1)觀察程序代碼,可知“判斷”按鈕的對象名為 .(單選,填字母:A.Text1/B.List1/C.Command1/D.Judge/E.判斷)
(2)為實現(xiàn)上述功能,請在橫線處填入合適的代碼.
Private Sub Judge_Click( ?。〥im riqi As String,st As String
Dim year As Integer,month As Integer,day As Integer
Dim rn As Boolean,hefa As Boolean
riqi=Text1.Text
year=Val(Mid(riqi,1,4))
month=Val(Mid(riqi,5,2))
day=① ‘第①處
st=Str(year)+“年“+Str(month)+“月“+Str(day)+“日“
rn=False‘用于判斷是否為閏年
If② Then rn=True‘第②處
If year Mod 4=0And year Mod 100<>0Then rn=True
hefa=True‘用于判斷是否為合法日期
If month=0Or month>12Then hefa=False
If day=0Then hefa=False
If (month=1Or month=3Or month=5Or month=7Or’與下一行語句同行
month=8Or month=10Or month=12)And day>31Then hefa=False
If (month=4Or month=6Or month=9Or month=11)’與下一行語句同行
And day>30Then hefa=False
If ③ Then hefa=False
’第③處,判斷閏年2月的天數(shù)是否合法
If month=2And Rn=False And day>28Then hefa=False
If hefa=True Then st=st+“合法日期“Else st=st+“非法日期“
List1.AddItem st
End Sub.
發(fā)布:2024/10/31 8:0:1組卷:8引用:0難度:0.1
把好題分享給你的好友吧~~
( ?。?/div>
'n=8,排序前數(shù)據(jù)存儲在數(shù)組a中,并在列表框Listl中顯示
'代碼略
End Sub
Private Sub Command1_Click
'n=8,排序前數(shù)據(jù)存儲在數(shù)組a中,并在列表框Listl中顯示
'代碼略
End Sub
Private Sub Command1_Click
( )
( ?。?/div>
Dim flag As Boolean'flag值為True表示一遍加工中發(fā)生過交換
i=1
flag=True
Do While'(1)i<=n-1Or flag=True
flag=False
For j=n To i+1Step-1
If a(j)<a(j-1)Then
k=a(j):a(j)=a(j-1):a(j-1)=k
flag=True
End If
Next j
i=i+1
Loop
Str(i)
Label3.Caption=“排序過程的加工遍數(shù)為“+'(2)
For i=1To n
List2.AddItem Str(a(i))
Next i
End Sub.
Dim flag As Boolean'flag值為True表示一遍加工中發(fā)生過交換
i=1
flag=True
Do While'(1)i<=n-1Or flag=True
flag=False
For j=n To i+1Step-1
If a(j)<a(j-1)Then
k=a(j):a(j)=a(j-1):a(j-1)=k
flag=True
End If
Next j
i=i+1
Loop
Str(i)
Label3.Caption=“排序過程的加工遍數(shù)為“+'(2)
For i=1To n
List2.AddItem Str(a(i))
Next i
End Sub.
【答案】( ?。唬ā 。?/div>
【解答】
【點評】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/4/20 14:35:0組卷:14引用:5難度:0.1
相似題
-
1.如圖VB應(yīng)用程序界面所示,下列關(guān)于類與對象的說法正確的是( ?。?br />
發(fā)布:2024/11/3 16:0:2組卷:5引用:2難度:0.7 -
2.編寫VB程序,實現(xiàn)如下功能:對于任意一個正整數(shù),如果是奇數(shù),則乘3加1,如果是偶數(shù),則除以2,得到的結(jié)果再按照上述規(guī)則重復(fù)處理,最終總能夠得到1.如,假定初始整數(shù)為5,計算過程分別為16、8、4,、2、1.
程序要求輸入一個整數(shù)到Text1,單擊命令按鈕Command1,將經(jīng)過處理得到1的過程輸出到List1上面,運行效果如圖2所示.
(1)如果將窗體左上角標(biāo)題“Form1”改為“角谷猜想”,可將Form1的
(2)為實現(xiàn)上述功能,請在橫線處填入合適代碼.
Private Sub Command1_Click ( ?。?br />Dim x As Long
x=Val(Text1.Text)'將text1中的內(nèi)容賦值給x
Do While x<>1
If
x=x*3+1
Else'x為偶數(shù)的情況
x=
List1.AddItem“x=“& Str(x)'將x的變化添加到list1上
Loop
End Sub
橫線處①應(yīng)填入
(3)運行程序是,發(fā)下如2圖所示錯誤,原因可能是發(fā)布:2024/10/26 17:0:2組卷:7引用:1難度:0.1 -
3.日期判斷:從文本框Text1輸入一個8位數(shù)字表示的日期,其中第1到4位表示年(第1位確定不為零),第5到6位表示月,第7到8位表示日.單擊“判斷”按鈕,判斷該日期是否合法,將結(jié)果依次輸出到列表框List1.程序界面如下圖所示:
提示:年份值符合下列兩種情況之一的是閏年.
1.年份是4的倍數(shù),但不是100的倍數(shù);
2.年份是400的倍數(shù).
(1)觀察程序代碼,可知“判斷”按鈕的對象名為
(2)為實現(xiàn)上述功能,請在橫線處填入合適的代碼.
Private Sub Judge_Click( ?。〥im riqi As String,st As String
Dim year As Integer,month As Integer,day As Integer
Dim rn As Boolean,hefa As Boolean
riqi=Text1.Text
year=Val(Mid(riqi,1,4))
month=Val(Mid(riqi,5,2))
day=①
st=Str(year)+“年“+Str(month)+“月“+Str(day)+“日“
rn=False‘用于判斷是否為閏年
If②
If year Mod 4=0And year Mod 100<>0Then rn=True
hefa=True‘用于判斷是否為合法日期
If month=0Or month>12Then hefa=False
If day=0Then hefa=False
If (month=1Or month=3Or month=5Or month=7Or’與下一行語句同行
month=8Or month=10Or month=12)And day>31Then hefa=False
If (month=4Or month=6Or month=9Or month=11)’與下一行語句同行
And day>30Then hefa=False
If ③
’第③處,判斷閏年2月的天數(shù)是否合法
If month=2And Rn=False And day>28Then hefa=False
If hefa=True Then st=st+“合法日期“Else st=st+“非法日期“
List1.AddItem st
End Sub.發(fā)布:2024/10/31 8:0:1組卷:8引用:0難度:0.1
把好題分享給你的好友吧~~
APP開發(fā)者:深圳市菁優(yōu)智慧教育股份有限公司| 應(yīng)用名稱:菁優(yōu)網(wǎng) | 應(yīng)用版本:5.0.7 |隱私協(xié)議|第三方SDK|用戶服務(wù)條款
本網(wǎng)部分資源來源于會員上傳,除本網(wǎng)組織的資源外,版權(quán)歸原作者所有,如有侵犯版權(quán),請立刻和本網(wǎng)聯(lián)系并提供證據(jù),本網(wǎng)將在三個工作日內(nèi)改正