中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

【精品解析】浙教版高一信息技術 專題五:VB程序設計

資源下載
  1. 二一教育資源

【精品解析】浙教版高一信息技術 專題五:VB程序設計

資源簡介

浙教版高一信息技術 專題五:VB程序設計
一、單選題
1.某算法的部分流程圖如圖所示。執行這部分流程,分別輸入35、50、60,則輸出值依次為(  )
A.10,3 B.10, 4 C.7, 10, 4 D.10, 12,3
2.某算法部分流程圖如圖所示。執行這部分流程,依次輸入7、-5、12、0,則輸出值是(  )
A.12 B.17 C.-20 D.5
3.(2019高二上·臺州月考)某算法的部分流程圖如圖所示,以下說法正確的是(  )
A.該流程執行后,變量k的值是-1
B.該流程執行后,變量a的值是16
C.該流程用于計算并輸出1+8-16的值
D.該流程完整執行1次,“a<32 ”共執行了3次
4.某算法的部分流程圖如圖所示,執行這部分流程后,下列說法正確的是(  )
A.變量n,x的值分別是6,1 B.變量n,x的值分別是1,6
C.步驟x←x/2的執行次數是4 D.步驟n←n+1的執行次數是6
5.下列VB表達式的值等于2016的是(  )
A.2016 Mod 2^20/10 B.Len(”2015”)+1
C.Str(2008)+”8” D.Mid(”20160501”,1,4)
6.在Visual Basic中,下列表達式的值等于2的是(  )
A.Int(2.1) B.Abs(-2.1)
C.Sqr(2.1) D.Len(”2.1”)
7.(2016高二上·杭州期末)能得到一個大于等于20且小于50隨機整數的VB表達式是(  )
A.Int(rnd*50)-20 B.Int(rnd*30+20)
C.Int(rnd*31+20) D.Int(rnd*30)+1
8.在VB中,如果a=1, b=0, c=-1,那么下列表達式值為假的是(  )
A.(a>b) And (b>c) B.(a>-c) And (b>a)
C.(ac) D.(a>c) Or (b=a)
9.在VB中,已知整數n≥100,下列與語句b = n \ 10 Mod 10功能相同的是(  )
A.b = (n Mod 100) \ 10 B.b = n Mod 10 \ 10
C.b = (n Mod 10) \ 100 D.b = n \ 100 Mod 10
10.一個VB工程的部分設計界面如下圖所示:
下列選項正確的是(  )
A.窗體的Caption屬性值是“對象”
B.窗體文件名是“Form1.frm”
C.當前選中對象的名稱是“Shape”
D.工程的名稱是“我的工程”
11.某VB程序的一個事件過程代碼如下:
Private Sub Command1_Click()
Dim u As Single, x As Single, y As Single, z As Single
u=Val(Text1.Text)
x=(u+10)/(u*u+8)
y=(u-1)/(x+u)
z=Sqr(x-y)
Text2.Text=Str(z)
End Sub
程序運行時,在文本框Text1中輸入-1,單擊命令按鈕Command1,彈出如圖所示的錯誤提示信息。產生此錯誤的語句是(  )
A.u=Val(Text1.Text) B.x=(u+10)/(u * u+8)
C.y=(u-1)/(x+u) D.z=Sqr(x-y)
12.有如下VB程序段:
x=-4.2
y=Abs(Int(x))
If x>0 And x<5 Then
y=y+1
Else
y=y-1
End If
該程序段運行后,y的值為(  )
A.3 B.4 C.5 D.6
13.如下VB程序段:
x=Val(Text1.Text)
If x>3 Then
If x<=6 Then y=2*x
Else y=3*x
Else
y=4*x
End If
Print y
若程序運行時在文本框Text1中輸入6,則y的值是 (  )
A.24 B.18 C.12 D.6
14.下列VB程序運行時,在文本框Text1中輸入"Basic",單擊命令按鈕Command1后,文本框Text2中顯示的是 (  )
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s1 As String, s2 As String, c As String
s1=Text1.Text
s2=” ”
n=Len(s1)
For i=1 To n
c=Mid(s1,i,1)
s2=c+s2
Next i
Text2.Text=s2
End Sub
A.cisaB B.csBai C. Basic D.aicsB
15.有如下VB程序段:
Max=-10000
For i=1 To 10
s=0
For j=i To 10
s=s+a(j)
If s>max Then max=s
Next j
Next i
已知數組a(1)到a(10)的原始數據為6,-6,8,-7,7,2,-2,-1,-2,4。程序執行后,變量max的值為(  )
A.9 B.10 C.27 D.4
16.(2017高二下·浙江開學考)有如下程序段:
a(1)=False
For i = 2 To 20
a(i) = True
Next i
For i = 2 To 20
If a(i) = True Then
For j = 2 To 20 \ i
a(i * j) = False
Next j
End If
Next i
t = 0
For i = 1 To 20
If a(i) = True Then
t = t + 1
End If
Next i
經過該程序段運行后,變量t的值為(  )
A.5 B.6 C.7 D.8
17.某VB程序段如下:
i=1:j=10:temp=a(5)
Do While a(j)>temp
j=j-1
Loop
Do While a(i)i=i+1
Loop
temp=a(i):a(i)=a(j):a(j)=temp
數組元素a⑴到a(10)的值依次為“36 91 36 17 93 99 2 9 97 97”,執行該程序段后,a(5)的值為(  )
A.93 B.9 C.36 D.97
18.下列程序執行后變量c的值(  )
s="ABC123":i=1
Do While i<=6
ch=Mid(s,i,1)
If ch>="0" And ch<="9" Then c=c+1
i=i+1
Loop
A.1 B.2 C.3 D.4
二、綜合題
19.編寫VB程序,界面設計如圖所示,使其具有下列功能:在文本框Text1中輸入一個小于20的正整數n,單擊“計算”按鈕Command1,計算斐波那契數列中第n項的值,并在標簽Label2中輸出結果;若輸入錯誤,則在標簽Label2中顯示相應的提示信息。(斐波那契數列是指這樣的數列:1,1,2,3,5,8,13…。即:第1項和第2項的值均為1,從第3項開始,每一項的值是它前面兩項之和)
(1)代碼“Private Sub
Command1_Click()”中的Command1 是   (單選,填字母:A .對象名/B .屬性名/C .屬性值/D .事件名)。
(2)為實現上述功能,請在劃線處填入合適的代碼。
Private Sub Command1_Click()
Dim n
As Long,k As Integer
Dim
f1 As Long,f2 As Long,f As Long
   
If
n>=20 Or n<=0 Then
Label2.Caption=”輸入的數據有誤”
Else
If
n<=2 Then ‘第1,2個元素的值都為1
f=1
Else
f1=1
f2=1
For
k=3 To n
f=f1+f2
f1=f2
f2=f
Next
k
End
If
Label2.Caption
= ”斐波那契數列第” + Str(n) + ”項的值為” +    
End
If
End Sub
(3)若在文本框Text1.Text輸入21,則標簽Label2顯示的內容為   。
20.小明編寫了一個VB程序,功能如下:輸入一個不超過30000的正整數,把它分解成質因子相乘的形式,如36=1*2*2*3*3,17=1*17。程序運行時,在文本框Text1中輸入一個整數,單擊“整數分解”按鈕Command1后,在標簽Label3中顯示該整數的分解結果。程序行界面如圖所示。
(1)若輸入待分解的整數為 45,則分解結果為:   。
(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。
Private
Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As String
   
s="1"
i=2
Do While i<=Val(Text1.Text)
If    
Then
n=n\i
s=s+"*"+Str(i)
Else
   
End
If
Loop
Label3.Caption=Text1.Text+"="+s
End Sub
21.用VB編寫正整數十進制轉換為十六進制的程序,運行界面如圖所示。程序功能如下:在文本框Text1中輸入待轉換的十進制值,單擊“十進制轉換十六進制”按鈕Command1,在文本框Text2中輸出轉換結果。
(1)要使命令按鈕Command1顯示的文本改為“十進制轉換十六進制”,可在其屬性窗口中將   屬性的屬性值修改為“十進制轉換十六進制”。
(2)若在文本框Text1中輸入79,則文本框Text2中輸出的值是   。
(3)請在程序的劃線處填寫合適的代碼。
Private
Sub Command1_Click()
Dim a As String,s
As String
Dim r As Integer,x
As Integer
x=Val(Text1.Text)
s=""
Do While x>0
   
x=x\16
If r>9 Then
a=Chr(r+55)
Else
a=Str(r)
End If
s=a+s
   
Text2.Text=s
End Sub
22.小林為了將十進制數轉化為k進制數(k介于2~16之間)設計如下界面程序:在文本框Text1中輸入一個十進制數,在文本框Text2中輸入整數k(范圍在2到16之間),單擊“運行”按鈕Command1,程序將十進制轉化為k進制的,并在標簽Label1中輸出結果。請回答下列問題:
(1)在設計程序界面時,要更改窗體標題處顯示的內容,應修改窗體的   屬性。
(2)實現上述功能的 VB 程序如下。請在劃線處填入合適代碼。
Private
Sub Command1_Click()
Dim d As Integer,
k As Integer, r As Integer, s As String,
c As String
d = Val(Text1.Text) : k = Val(Text2.Text)
s = ""
Do While d>0
r=d Mod k
If
r>=10 Then
c=Mid("ABCDEF",r-9,1)
Else
c=Str(r)
End
If
s=c+s
   
Loop
   ="結果為"+s
End Sub
(3)運行該程序,在文本框 Text1 中輸入“38”,文本框 Text2 中輸入“2”,單擊“運行”按鈕,則 Label1 顯示的內容為是   。
23.奇偶校驗是一種校驗數據傳輸正確性的方法。其中奇校驗方法:統計二進制數據的數位中“1”的個數,若個數為奇數,則校驗位值為0,否則校驗位值為1。小李編寫了一個計算奇校驗位值得VB程序,功能如下:在文本框Text1中輸入1~255十進制待校驗數,單擊“計算”按鈕Command1后,在文本框Text2中顯示該數對應的二進制值,并在標簽Label3中顯示該數的校驗位值。程序運行界面如圖所示。
(1)在設計程序界面時,要清空文本框中的顯示內容,應修改該文本框中的   屬性。
(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。
Private Sub Command1_Click()
Dim a As Integer, s As String
Dim n As Integer, t As Integer, v As Integer
n=Val(Text1.Text)
t=0
s=""
Do While n>0
a=n Mod 2
n=n\2
t=   
s=Str(a)+s
Loop
v=t Mod 2
Text2.Text=s
Label3.Caption="校驗位值:"+    
End Sub
(3)運行該程序,在文本框Text1中輸入22,單擊“計算”按鈕,則顯示的校驗位值是   。
24.英文打字練習:為了幫助初學者練習指法,小方利用所學的VB知識編寫了一個程序。單擊“生成原文”按鈕Command1后,程序自動在文本框Text1中隨機生成若干大小寫混編的英文字符串,練習者在文本框Text2中進行輸入練習。單擊“結果檢查”按鈕Command2后,在文本框Text3中輸出指法練習中正確的字符數,另外還輸出錯誤的字符所處的位置。運行效果如圖所示,VB代碼如下(注:“A”的ASCII碼值為65,“a”的ASCII碼值為97)。
(1)為實現上述功能,請在劃線處填入合適代碼。
Const n=8
Private Sub Command1_Click() ′隨機產生n個大小寫英文字符
Dim i As Integer, mode As Integer, s As String
Randomize
s=””
Text2.Text=””:Text3.Text=””
For i=1 To n
mode=Int(Rnd*2) ′mode=1時生成大寫字母,mode=0時生成小寫字母
If mode=1 Then
s=s+Chr(Int(Rnd*26)+65)
Else
   
End If
Next i
Text1.Text=s
End Sub
Private Sub Command2_Click()′結果檢查
Dim i As Integer, count As Integer, pos As String
count=0
pos=”” ′pos表示錯誤字符的位置
For i=1 To n
If     Then
count=count+1
Else
   
End If
Next i
Text3.Text=”正確字符有:”+Str(count)+”個!” +”錯誤位置:”+pos
End Sub
(2)根據代碼判斷,當n=8時,在文本框Text2中額外輸入第9個字符后,單擊“結果檢查”按鈕,輸出結果中錯誤位置的值會不會增加?   (選填:會/不會)。
25.在一次晚會上,一位魔術師掏出一疊撲克牌,取出其中13張黑桃,預先洗好牌,把牌面朝下,對觀眾說:“我不看牌,只數一數就能知道每張牌是什么?”魔術師口中念1,將第一張牌翻過來看正好是A;魔術師將黑桃A放到桌子上,繼續數手里的余牌,第二次數1,2將第一張牌放到這疊牌的下面,將第二張牌翻開,正好是黑桃2,也把它放在桌子上。第三次數1,2,3,前面兩張牌放到這疊牌的下面,取出第三張牌,正好是黑桃3,這樣依次將13張牌翻出,準確無誤。現在的問題是,魔術師手里牌的原始順序是怎么樣的呢?運行結果如下圖所示。
代碼如下:
Private Sub Command1_Click()
Dim a(1 To 13) As Integer, i As Integer, j As Integer, n As Integer
For i=1 To 13
a(i)=0
Next i
i=1:n=0:j=1
Do While i<=13
Do While True
If j>13 Then    
If a(j)=0 Then n=n+1
If n=i Then
   
n=0
Exit Do
End If
j=j+1
Loop
   
Loop
Label1.Caption="原來牌的順序是:"
For k=1 To 13
Label2.Caption =   
End Sub
26.小明編寫了一個簡單算式計算器程序,功能如下:在文本框Text1中輸入一個加法的算式,形式為:a+b,a和b都為正整數。單擊按鈕Command1后,在標簽Labe1上顯示算式的計算的結果。程序運行界面如下圖所示:
(1)在設計程序界面時,應使用圖b所示“控件工具箱”中的   (填數字編號)添加標簽框對象。
(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。
Private
Sub Command1_Click()
Dim key As String
Dim a As Integer, b As Integer, ans As
Integer, ch As String
key=Text1.Text
i=1
Do While i<=Len(key)
ch=Mid(key,i,1)
If ch>="0" And ch<="9" Then
   
Else
Exit Do ′退出循環
End If
Loop
   
b=Val(Mid(key,i+1,Len(key)-i))
ans=a+b
Label1.Caption="算式計算結果為:"+Str(ans)
End
Sub
(3)運行時,在文本框中輸入“123+10”,單擊“計算”按鈕后,對語句ch=Mid(key,i,1)執行次數是   (單選,填字母:A .執行3次/B .執行4次/C .執行5次/C .執行6次)
27.小李用VB編寫了一個VB程序,在文本框Text1中輸入任意字串s,單擊命令按鈕Command1,統計s中以各連續數字字串為一因子的數字之和。如輸入字符串
“ast23bcde567fg8”,則輸出598,即23+567+8,并在Text2中輸出結果。程序界面如圖所示。代碼如下:
(1)若要將文本框的默認值設為空,則應設置文本框的   屬性為空。
(2)為實現上述功能的VB程序,請在劃線處填寫合適的代碼。
Private
Sub Command1_Click()
Dim s As String, a As String, b As String
Dim p As Integer, sum As Integer
s=Text1.Text + "e" ′加一個結尾非數字字符
i=1
p=0
sum=0
Do While ia=Mid(s,i,1)
b=Mid(s,i+1,1)
If (a>="0" And a<="9") And
(b>="0"
And b<="9") Then
p=p*10+Val(a)
   
p=p*10+Val(a)
sum=sum+p
   
i=i+1
End If
i=i+1
Loop
Text2.Text=Str(sum)
End
Sub
(3)若輸入字符串是“a2b056789bc8”,則程序運行后顯示的結果是:   。
28.RGB顏色模式是用8位二進制數表示紅色、8位二進制數表示綠色、8位二進制數表示藍色即使用24位二進制數表示一種顏色的模式。若將每位二進制數取反,即(0改為1、1改為0)就會變為另一種顏色,我們稱這種方式為顏色反相。小明編寫了一個VB程序實現上述功能,在名稱為o_c_txt的文本框中輸入原始顏色如#000000,點擊命令按鈕fx_cmd后,在名稱為f_c_lab的標簽中輸出反相后的顏色如#FFFFFF。運行效果如圖所示。實現上述功能的算法如下:
數組dzb_h的16個元素分別存放16進制數的16個基本數碼。
依次取出原始顏色代碼中每一位對應的16進制數碼,例如原始顏色代碼為#123456,第1次取出1,第2次取出2……
在數組dzb_h各元素中找到對應16進制數碼的元素
運用規律:0+F=1+E…=7+8取得反相色并累加,例如:數組dzb_h第1個元素值的反相色的值是數組dzb_h第16個元素值。
輸出得到的反相色。
實現上述功能的VB程序代碼段如下,請完善相關程序代碼。
Private Sub fx_cmd_Click()
Dim dzb_h(1 To 16) As String
Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String
dzb_h(1)="0":dzb_h(2)="1":dzb_h(3)="2":dzb_h(4)="3":dzb_h(5)="4":dzb_h(6)="5":dzb_h(7)="6"
dzb_h(8)="7":dzb_h(9)="8":dzb_h(10)="9":dzb_h(11)="A":dzb_h(12)="B":dzb_h(13)="C"
dzb_h(14)="D":dzb_h(15)="E":dzb_h(16)="F"
o_c=o_c_txt.Text
   
f_c="#"
Do While i<=Len(o_c)
c=Mid(o_c,i,1)
If Asc(c)>96 Then    
xbxh=1
Do While xbxh<17
If     Then
f_c=   
Exit Do
End If
xbxh=xbxh+1
Loop
i=i+1
Loop
f_c_lab.Caption=f_c
End Sub
29.在計算機中負數反碼的計算如下:給出十進制數x(-127≤x≤0),將x的絕對值轉化為七位二進制數,然后逐位取反,最左邊增加符號位1得到八位二進制數反碼。例如十進制數-7,將7轉換為七位二進制數為0000111,逐位取反變成1111000,最左邊增加符號位1得到八位二進制數反碼為11111000。小杜編寫了一個反碼轉化程序,功能如下:在文本框Text1中輸入十進制負數x(-127≤x≤0),單擊按鈕Command1后,在標簽Labe1上顯示其反碼。程序運行界面如下圖所示。
(1)在設計程序界面時,使應使用圖b所示“控件工具箱”中的   (填寫相應編號)添加文本框對象。
(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。
Private Sub Command1_Click()
Dim n As Integer, t As
Integer
Dim r As Integer, c As
Integer
Dim s As String
n=Val(Text1.Text)
   
s=””
Do While t>0
r=(t+1) Mod 2
   
t=t\2
c=c+1
Loop
For i=1 To 8-c
s=CStr(1)+s
Next i
Label1.Caption=” 十進制數”+CStr(n)+”的二進制反碼為”+s
End Sub
(3)程序運行時,在文本框中輸入“-27”,單擊“轉反碼”按鈕后,標簽Label1上顯示的內容是為:十進制數-27的二進制反碼為   。
30.當計算機程序中無法用普通數據類型表示位數較多的乘數和計算結果時,就需要采用高精度乘法。如:當兩個各有20位數字的整數相乘時,就無法用長整型(Long)數據類型來表示。高精度乘法運算就是運用數組,用程序模擬列豎式計算的過程。兩個正整數進行高精度乘法計算的一般算法如下:
⑴將第一個整數各位上的數字按照從低位到高位的順序依次存入數組a(1)、a(2)、…、a(La)中,將另一個整數各位上的數字按照從低位到高位的順序依次存入數組b(1)、b(2)、…、b(Lb)中。其中,La表示第一個整數的位數,Lb表示第二個整數的位數;
⑵按照從低位到高位的順序,將兩個整數各位數值進行逐位乘法計算(第一輪先讓b(1)依次乘以a(1)、a(2)、…、a(La),第二輪再讓b(2)依次乘以a(1)、a(2)、…、a(La),依次進行),每位的乘法結果也按照低位到高位的順序依次存入數組ans(1)、ans(2)、ans(3)…中;
⑶對數組ans中的計算結果進行從低位到高位的進位處理;
⑷統計數組ans中實際計算結果的有效數值位數,并將位數值存入變量length;
⑸按照高位到低位的順序輸出數組ans中的計算結果。
小強按照上述方法設計了一個兩數進行高精度乘法計算的VB程序,功能如下:在文本框Text1和Text2中依次輸入兩個整數,單擊“計算”按鈕Command1,程序進行高精度乘法計算,并在標簽Label4中輸出計算結果。下面信息顯示了進行高精度乘法計算的主要過程(假設輸入的兩個整數分別為“123”和“45”):
圖a
圖b
程序運行效果如圖所示。
圖c
實現上述功能的VB程序如下:
(1)請在劃線處填入合適代碼。
Dim a(1 To 30)As Integer, b(1 To 30) As Integer, ans (1 To 60) As
Integer
Dim La As Integer, Lb As Integer, length As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, temp As String
'將兩個乘數(正整數)各數位上的數字按照上述算法依次存入數組a和b,每個正整數位數分別保存到變量La和Lb;將保存結果的數組ans(i)值初始化為零(該部分程序代碼略)
For i=1 To Lb
For j=1 To La
ans(i+j-1) =    
Next j
Next i
For i=1 To La+Lb
ans(i+1)=ans(i+1)+ans(i)\10
ans(i)=   
Next i
length=La+Lb
Do While ans(length)=0
length=length-1
Loop
For i=    To 1 Step -1
Label4.Caption=Label4.Caption&Str(ans(i))
Next i
End Sub
(2)根據本題算法,若輸入的兩個整數分別為5125和18,則在輸出乘法計算結果時,變量length的值為   。
答案解析部分
1.【答案】B
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖可知:i=1,m=5,i值小于3執行循環,第一次循環:g=35,r=g/m=35/5=7,r不在r大于7和小于等于10之間,將i值增1后判斷i值,i=2,小于3,執行第二次循環:g=50,r=g/m=50/5=10,r在r大于7和小于等于10之間,故將r的值10輸出,然后將i值增1后進行判斷,r=3故符合循環條件r小于等于3的循環條件,繼續循環,第三次循環:g=60,r=g/m=60/5=12,r不在r大于7和小于等于10之間,不進行輸出,將i增1后進行判斷,此時i=4超過了終值3,故循環,輸出i值4,由上分析知,該程序共輸出一個r值10和一個i值4。故答案選B。
【分析】本題考查的是使用流程圖表示算法。在使用流程圖表示算法中,要注意流程圖中各框圖的含義及流程線的走向。尤其是使用判斷框和流程線組成的循環結構。
2.【答案】B
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖可知:i=1,a=10,b=-10,i值為1小于4。
執行第一次循環:c=7,c=7b=-10條件成立,b=c=7,將i值增1判斷其是否小于等于4,i=2條件成立;
執行第二次循環:c=-5,cb=7條件不成立,將i值增1,i=3<=4條件成立;
執行第三次循環:c=12,12b=7條件成立,b=c=12,將i值增1,i=4>=4成立;
執行第四次循環,c=0,c=0b=12,條件不成立,不改變b值,將i值增1,i=5大于4,退出循環。
最終輸出b-a的值,b=12,a=-5,b-a=17。故答案選B。
【分析】本題考查的是由流程圖表示算法。本流程圖是由一個單層循環和兩個條件判斷語句構成。循環使用i來控制,條件判斷是判斷a和c的值以及c和b的值,如果c值大于a值則將c值賦給a,如果c值小于b則將c的值賦給b,在循環終了將b-a的值輸出。
3.【答案】D
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】A選項,該流程執行后,變量k的值是1,A選項錯誤;B選項,該流程執行后,變量a的值是32,B選項錯誤;C選項,該流程用于計算并輸出1+8+0的值 ,C選項錯誤;D選項,該流程完整執行一次,“a<32"共執行3次,分別是a=8,a=16和a=32,D選項正確,故答案選D。
【分析】此題考查VB選擇、循環結構的執行。
4.【答案】C
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖知:x=5,n=0,如果x不等于1時進行循環,x為5不等于1,執行第一次循環:判斷x是否為偶數,x=5不為偶數,故x=3*x+1=3*5+1=16,將n值增1(n為計數器,用于統計循環次數):n=0+1=1。判斷x值,x=16<>1,執行第二次循環:x=16為偶數,執行x=x/2=16/2=8,將n值增1,n=1+1=2,判斷x值,x=8<>1。執行第三次循環:x=16為偶數,執行x=x/2=8/2=4,將n值增1,n=2+1=3。判斷x值,x=4<>1,執行第四次循環:x=4為偶數,執行x=x/2=4/2=2,將n值增1,n=3+1=4。判斷x值,x=2<>1,執行第五次循環:x=2為偶數,執行x=x/2=2/2=1,將n值增1,n=4+1=5。判斷x值,x=1<>1條件不成立,結束循環,輸出n和x值:5和1。
由程序分析知,n和x值為5和1,不是6和1,選項A、B錯誤;本題共循環5次,但第一次x為奇數,x=x/2執行了四次,選項C正確;n值為5,故 n←n+1 初執行了5次,選項D錯誤。故答案選C。
【分析】本題考查的是使用流程圖表示算法,以特定的圖形符號加上說明,表示算法的圖,稱為流程圖或框圖。使用圖形表示算法的思路是一種極好的方法,因為千言萬語不如一張圖。
5.【答案】A
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:2016 mod 2^20/10=2016 mod 1048576/10=2016 mod 104857.6=2016,選項B: Len(”2015”)+1 =4+1=5,選項C: Str(2008)+”8” =“2008”+“8”=“20088”,選項D: Mid(”20160501”,1,4) =“2016”。故答案選A。
【分析】本題考查的是常用的標準函數的功能及數學運算符的含義。mod是求余符號,^是乘方符號,len()函數是求字符串的長度,str()函數是將數值型轉為字符串,mid()函數是從字符串中截取一個指定長度的子串。
6.【答案】A
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:int(2.1)=2,選項B:abs(-2.1)=2.1,選項C: Sqr(2.1) =1.44914,選項D: Len(”2.1”) =3。故答案選A。
【分析】本題考查的是常用標準函數的功能。int()是求不大于參數的整數,abs()是求參數的絕對值,sqr()是求參數的算術平方根。len()函數是求字符串參數的長度。
7.【答案】B
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:表達式產生的隨機整數的范圍為【-20,29】;選項B:表達式產生的整數的范圍為【20,49】;選項C:表達式產生的隨機整數的范圍為【20,50】;選項D:表達式產生的隨機整數的范圍為【1,30】。故答案選B。
【分析】本題考查的是產生指定范圍內的隨機整數的公式。其公式為:int((上限-下限+1)*rnd)+下限。
8.【答案】B
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A: (a>b) And (b>c) 可化為(1>0) and (0>-1) 可化為 true and true,其值為true,選項B:(a>-c)and(b>a)可化為(1>-(-1)) and (0>1) 可化為false and false ,結果為false。選項C: (ac) 可化為(1<0) or (0>-1) 可化為false and true。選項D: (a>c) Or (b=a) 可化為(1>-1) or (0=1) 可化為false or true,其值為true,故答案選B。
【分析】本題考查的是邏輯表達式的運算,邏輯表達式就是使用邏輯運算符將關系表達式連接起來的式子。邏輯運算符有三個:not、and和or。not是將邏輯值求反,and的兩邊只要有一個false其值為false,or的兩邊只要有一個true,其值為true。
9.【答案】A
【知識點】常量、變量及變量的賦值
【解析】【解答】由題義知: b = n \ 10 Mod 10 是先將n值整除以10后(其值為去掉個位數后的數)再除以10要余數,結果為n十位上的數字并賦給變量b。選項A:將n值整除以100后的整數商再整除以10,結果為n十位上的數,賦給變量h。選項B:選將n值除以10后要余數,結果為n的個位上的數,再除以10后要整數商,結果為0,并將0賦給變量b。選項C:先將n除以10后要余數,結果為n個位上的數,再將其除以100后要整數商,結果為0,并將0賦給變量C。選項D:先將n除以100后要整數商,結果為去掉n的后兩位的數,再將商除以10后要余數,結果為n的百位上的數,并將該數賦給變量b,故答案選A。
【分析】本題考查的是將一個整數的十位上的數取出來的方法。其方法可以有兩種:一種為先去掉個位上的數后再除以10取余數。另一種是去掉十位數以前的數位(除以100取余)后除以10要整數商。
10.【答案】A
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用
【解析】【解答】選項A:由圖可以看出,該窗體的標題為“對象”,即其caption值為“對象”,本項對。選項B:窗體的文件名為“myform.frm”而不是 “Form1.frm” ,本項錯。選項C:當前選中的對象名稱為“shape1”,其類名為“shape”,本項錯。選項D:本工程的工程名為“工程1”,其工程文件名為“我的工程.vbp”,本項錯。故答案選A。
【分析】本題考查的是對象名和類名。對象是由類生成的,對象名和類名是不同的,盡管兩者相似但是不同的,一般對象名是由類名加數字來定義的。
11.【答案】C
【知識點】程序的調試及運行
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click() ‘命令按鈕單擊事件過程開始
Dim u As Single, x As Single, y As Single, z As Single ‘定義單精度變量u、x、y和z
u=Val(Text1.Text) ‘將從文本框1中輸入的字符串轉為數值型并賦給變量u
x=(u+10)/(u*u+8) ‘根據u值來計算x值
y=(u-1)/(x+u) ‘根據x和u的值來計算y值
z=Sqr(x-y) ‘計算x-y的算術平方根并賦給變量z
Text2.Text=Str(z) ‘在文本框2中輸出z值
End Sub ‘結束事件過程
由以上分析,如果 文本框Text1中輸入-1 ,則u=-1,x=(u+10)/(u*u+8) =(-1+10)/(-1*-1+8)=9/9=1,y=(u-1)/(x+u) =(-1-1)/(1+(-1))=1/0,此時0作了除數,報錯。故答案選C。
【分析】本題考查的是VB常見的程序報錯原因分析。在本題是使用0作了除數,其他的還有“for沒有next“是循環語句缺少結束語句或在其中的嵌套條件判斷語句缺少結束語句。”下標越界“是使用的數組元素的下標超過了定義的數組元素的下標(大于了上限或小于了下限)。”溢出“是使用的數值型變量的值超過了其類型表示的數的范圍。”類型不匹配“給變量賦值的類型不是其定義的數據類型或標準函數的參數使用的類型不是其要求的類型。
12.【答案】B
【知識點】算法的控制結構;運算符、基本運算與表達式
【解析】【解答】本題程序分析如下:
x=-4.2 ‘將x賦值為-4.2
y=Abs(Int(x)) ‘求x的整數的絕對值,故y=Abs(Int(x))=Abs(Int(-4.2 ))=abs(-5)=5
If x>0 And x<5 Then ‘如果x大于0且x小于5時進行如下處理
y=y+1 ‘將y值增1
Else ‘否則(即x值不在0和5之間時)進行如下處理
y=y-1 ‘將y值減1
End If ‘結束條件判斷
在本題中,由于x=-4.2不在0和5之間,故將y值減1,而y值為5,故答案選B。
【分析】本題考查的是int()函數和abs()函數及選擇語句的的用法,int是求不大于參數的整數,如果參數為正數,則將小數部分截去,如果為負數則將其整數部分減去1.abs()是求參數的絕對值。選擇語句是根據條件來選擇執行某條或某些語句而跳過另外一些語句。
13.【答案】C
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
x=Val(Text1.Text) ‘將從文本框1中輸入的字符型轉為數值型并賦給變量x
If x>3 Then ‘如果x值大于3則進行如下處理
If x<=6 Then ‘如果x小于等于6則進行如下處理
y=2*x ‘將x的2倍賦給變量y
Else ‘否則(即x大于6進)進行如下處理
y=3*x ‘將x的3倍賦給變量y
endif ‘結束內層條件判斷
Else ‘否則(即x值小于等于3時)進行如下處理
y=4*x ‘將x的4倍賦給變量y
End If ‘結束外層條件判斷
Print y ‘輸出y值
由以上分析知,當x=6時,執行y=2*x=2*6=12,故答案選C。
【分析】本題考查的是多分支條件判斷語句。在有多種的情況(三種以上)需要作判斷處理時,可以使用多分支語句結構,多分支語句結構可以對應四種語句:一種是單分支語句的簡單羅列,即逐條進行判斷,二是進行雙分支語句的嵌套,三是使用if……elseif……else……end if語句,四是使用select case語句。在多分支語句中一般只有一個條件下的語句得到了執行,其他條件下的語句都跳過。
14.【答案】A
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s1 As String, s2 As String, c As String
s1=Text1.Text ‘將從文本框1中輸入的字符賦給變量s1
s2=” ” ‘初始化字符串變量s2
n=Len(s1) ‘將字符串s1的長度賦給變量n
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1
c=Mid(s1,i,1) ‘按i值從字符串s1中取出一個字符并賦給變量c
s2=c+s2 ‘將字符合并到字符串s2的左側
Next i
Text2.Text=s2
End Sub
由以上程序分析知,該程序是從字符串1從左到右將字符取出來,然后將字符串從右向左合并到字符串s2中,即s2是s1的倒串,從文本框1中輸入 "Basic" ,故輸出值為“cisaB”,故答案選A。
【分析】本題考查的是將一個字符串倒序輸出的算法,在將字符串倒序時,要逐位從原串中取出來,然后逐位合并到一個空串的左側。
15.【答案】B
【知識點】算法的控制結構
【解析】【解答】分析程序段可知,max中存儲的是連續幾個數組元素相加的最大值。當數組原始數據為6,-6,8,-7,7,2,-2,-1,-2,4時,8,-7,7,2相加和最大,其值為10,所以程序執行后,變量max的值為10。故答案選B。
【分析】本題考查嵌套For循環的理解以及對程序段的解讀。
16.【答案】D
【知識點】常量、變量及變量的賦值
【解析】【解答】本題程序分析如下:
a(1)=False ‘將數組a的第一個元素值賦值為false。
For i = 2 To 20 ‘使用i控制循環對數組a的第二個元素到第二十個元素進行賦值。
a(i) = True ‘將數組a的第i的元素賦值為true。
Next i ‘結束循環
For i = 2 To 20 ‘使用i來控制循環來處理數組元素的第2個元素到第20個元素
If a(i) = True Then ‘如果數組a的第i個元素值為true時進行如下處理
For j = 2 To 20 \ i ‘使用j來控制循環,j值為從第二個元素到20整除i個元素
a(i * j) = False ‘將第i*j個元素的值賦值為false
Next j ‘結束內層循環
End If ‘結束條件判斷
Next i ‘結束外層循環
t = 0 ‘初始化計處器t的值為0
For i = 1 To 20 ‘使用i來循環循環
If a(i) = True Then ‘如果第i個數組元素的值為true時進行如下處理
t = t + 1 ‘ 使用t進行計數
End If ‘ 結束判斷
Next i ‘結束循環
由以上分析知當i為2時,j為2到10,將false賦給的元素為(只寫下標):4、6、8、10、12、14、16、18、20,i為3時,j為2到6,為false的數組元素的下標為:9、15,i值為4時,j由2到5,沒有賦新值,當i值為5時,j值為2到4,沒有賦新值,當i為6時,j值為2到3,沒有重賦新值,當i值為7時,j值為2到2,沒有賦新值,當i值為8、9、10時,j值為2,沒有賦新值,當i值為11-20時內層沒有進行循環故沒有賦新值,由上可知值為false的有a(1)、a(9)、a(15)及所有除了下標為2的偶數數組元素,故值為false的數組元素個數為9+3=12個,值為true的數組元素個數為8個。故答案選D。
【分析】本題為一道選將數組元素的值按一定的規則進行賦值然后統計數組中特殊值的程序設計題。在本題中主要應用了計數器進行統計。
17.【答案】B
【知識點】算法的控制結構
【解析】【解答】分析程序段運行過程:
第一個Do While循環執行結束后,j的值是8;
第二個Do While循環執行結束后,i的值是5;
繼續執行語句temp=a(i),temp=a(5)=93;a(i)=a(j),a(5)=a(8)=9;a(j)=temp,a(8)=temp=93。
所以執行該程序段后,a(5)的值為9。故答案選B。
【分析】本題考查對Do While循環語句的理解。
語句格式:
Do While 條件表達式
循環體(語句序列)
Loop
18.【答案】C
【知識點】算法的控制結構
【解析】【解答】觀察Do While循環體,當ch>="0" And ch<="9"時,即ch是數字字符時,統計變量c的值加1。因為變量s="ABC123",其中包含3個數字字符,所以最終c的值是3。故答案選C。
【分析】本題考查對Do While循環語句及條件語句的理解。
19.【答案】(1)A
(2)n=Val(Text1.Text);Str(f)
(3)輸入的數據有誤
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值;過程與自定義函數
【解析】【解答】(1)Command1是按鈕的對象名,Command1_Click是事件名。故答案為:A。
(2)1處語句是獲取文本框Text1中輸入的正整數n的值,即n=Val(Text1.Text);
2處語句是輸出斐波那契數列第n項的值,該值保存在變量f中,所以該處語句為Str(f)。
故答案為:n=Val(Text1.Text);Str(f)。
(3)當n>20時,Label2中顯示“輸入的數據有誤”。故答案為:輸入的數據有誤。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
20.【答案】(1)45=1*3*3*5
(2)n=Val(Text1.Text);n Mod i=0;i=i+1
【知識點】常量、變量及變量的賦值;過程與自定義函數
【解析】【解答】(1)分解整數45的過程:計算45除2,不能整除;計算45除3,等于15,得知3是45的一個因子;繼續15除2,不能整除;15除3,等于5,因此3和5是45另外兩個因子。所以整數45分解結果為45=1*3*3*5。故答案為:45=1*3*3*5。
(2)1處語句是獲取Text1中待分解整數n,所以n=Val(Text1.Text);
2處語句是判斷條件,當i能夠被n整除時,即n Mod i=0時,說明i是n的一個因子;
3處語句表示若當前i不能被n整除,則i=i+1,繼續下次循環。
故答案為:n=Val(Text1.Text);n Mod i=0;i=i+1。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
21.【答案】(1)Caption
(2)4F
(3)r=x Mod 16;Loop
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值
【解析】【解答】(1)Caption屬性用于顯示控件中的文字,所以要使命令按鈕Command1顯示的文本改為“十進制轉換十六進制”,可在其屬性窗口中將Caption屬性的屬性值修改為“十進制轉換十六進制”。故答案為:Caption。
(2)79 Mod 16=15,79\16=4,15轉換成十六進制對應的是字符F,所以Text2中輸出的值是4F。故答案為:4F。
(3)1處語句是從低位到高位依次計算十六進制數每一位的值,所以r=x Mod 16;
2處語句是將Do While循環結構補充完整,所以該處語句為Loop。
故答案為:r=x Mod 16;Loop。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
22.【答案】(1)Caption
(2)d=d\k;Label1.Caption
(3)結果為100110
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值
【解析】【解答】(1)Caption屬性用于顯示控件中的文字,所以要更改窗體標題處顯示的內容,應修改窗體的Caption屬性。故答案為:Caption。
(2)1處語句是控制Do While循環,每轉換一位進制數,d=d\k,繼續下一位進制數的轉換,直至d≤0;
2處語句是將結果顯示在Label1標簽中,即Label1.Caption=“結果為”+s。
故答案為:d=d\k;Label1.Caption。
(3)在文本框 Text1 中輸入“38”,文本框 Text2 中輸入“2”,程序執行過程如下:
38 Mod 2=0,38\2=19;
19 Mod 2=1,19\2=9;
9 Mod 2=1,9\2=4;
4 Mod 2=0,4\2=2;
2 Mod 2=0,2\2=1;
1 Mod 2=1,1\2=0;
所以最終Label1中顯示的內容為“結果為100110”。故答案為:結果為100110。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
23.【答案】(1)Text
(2)t+a;str(1-v) 或Str(Abs(v-1))
(3)0
【知識點】過程與自定義函數;進制及數制轉換
【解析】【解答】(1) 在設計程序界面時,要清空文本框中的顯示內容,應設置文本框的文本屬性為空,故本小題答案填寫:Text。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim a As Integer, s As String
Dim n As Integer, t As Integer, v As Integer
n=Val(Text1.Text) ‘將從文本框1中輸入的字符轉為數值型并賦給變量n
t=0 ‘將變量t的值設為0
s="" ‘初始化字符串變量s
Do While n>0 ‘在n大于0時進行循環
a=n Mod 2 ‘將n除以2的余數賦給變量a
n=n\2 ‘將n除以2的整數商賦給變量n
t= 1 ‘將得到的余數a累加到變量t中,故本處答案填寫:t+a
s=Str(a)+s ‘將本次得到的余數轉為字符型并合并到字符串s的左側,即后面得到的余數在字符串的左側,前面的字符在右側
Loop
v=t Mod 2 ‘將t除以2的余數賦給變量v
Text2.Text=s ‘在文本框2中輸出十進制數n對應的二進制數
Label3.Caption="校驗位值:"+ 2 ‘使用標簽3輸出奇偶校驗碼,由于由以上得到的v值是:有偶數個1時,v值為0,有奇數個1時,v值為0,故需要調整奇偶對應的0、1符號,故本題答案填寫: str(1-v) 或Str(Abs(v-1)) 。
End Sub
由以上程序分析知,1處為:將得到的余數a累加到變量t中,故本處答案填寫:t+a。
2處為:使用標簽3輸出奇偶校驗碼,由于由以上得到的v值是:有偶數個1時,v值為0,有奇數個1時,v值為1,故需要調整奇偶對應的0、1符號,故本題答案填寫: str(1-v) 或Str(Abs(v-1)) 。
(3)22轉為二進制數為:10110,共有3個1,則奇偶校驗位為0,故答案填寫:0。
【分析】本題是將十進制數轉為二進制數,并求其奇偶校驗碼的程序填空題。在將十進制轉為二進制數時采用除2取余法,即將十進制數n除以2其余數就是該位的二進制數碼,除以2的整數商做為下一次的被除數并賦給變量n,以此類推直到n的值為0為止。在計算各個二進制數碼時將其累加到一個變量中,最后由這個變量的奇偶性來判斷二進制數碼的奇偶校驗碼。
24.【答案】(1)s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”));Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1);pos=pos+Str(i)
(2)不會
【知識點】運算符、基本運算與表達式;常量、變量及變量的賦值
【解析】【解答】(1)本題程序分析如下:
Const n=8 ‘定義符號常量n,并賦值為8
Private Sub Command1_Click()
Dim i As Integer, mode As Integer, s As String
Randomize
s=”” ‘初始化字符串s的值為空串
Text2.Text=””:Text3.Text=”” ‘將文本框2和文本框3清空
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1
mode=Int(Rnd*2) ′產生一個【0,1】范圍內的隨機整數并賦給變量mode,mode=1時生成大寫字母,mode=0時生成小寫字母
If mode=1 Then ‘如果mode的值為1則進行如下處理
s=s+Chr(Int(Rnd*26)+65) ‘產生一個隨機大寫字母并合并到變量s中
Else ‘否則進行如下處理
1 ‘產生一個隨機小寫字母并合并到變量s中,故此處答案應填寫: s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”))
End If
Next i
Text1.Text=s ‘在文本框1中輸出這個隨機字符串
End Sub
Private Sub Command2_Click() ′命令按鈕2單擊事件過程開始,訪過程用于結果檢查
Dim i As Integer, count As Integer, pos As String
count=0 ‘將變量count初始化為0,count用于統計正確字符個數
pos=”” ′初始化變量pos為一個空串,pos表示錯誤字符的位置
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1,i用于指示文本框1和文本框2中字符串的位置
If 2 Then ‘如果從文本框1中的字符串中按i值和在文本框2中按i值取出一個字符相同時進行如下處理,故此處答案填寫: Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1)
count=count+1 ‘將count值增1,即正確字符多了1個
Else ‘否則,即取出來的兩個字符不相等時進行如下處理
3 ‘將i值轉為字符型并合并到字符串pos中,故此處答案填寫: pos=pos+Str(i)
End If
Next i
Text3.Text=”正確字符有:”+Str(count)+”個!” +”錯誤位置:”+pos ‘使用標簽3將檢驗結果輸出
End Sub
由以上程序分析知,1處為:產生一個隨機小寫字母并合并到變量s中,故此處答案應填寫: s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”)) 。
2處為:如果從文本框1中的字符串中按i值和在文本框2中按i值取出一個字符相同時進行如下處理,故此處答案填寫: Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1)。3處為:將i值轉為字符型并合并到字符串pos中,故此處答案填寫: pos=pos+Str(i) 。
(2)
【分析】本題為一道產生一個隨機字符串,并檢驗從文本框2中輸出的字符串正確個數及錯誤位置的程序填空題。在本題考查的重點是產生隨機字母的方法,產生隨機字母前先產生其ASCII碼,然后根據其ACSII碼值重新生成字符,另外隨機產生大小寫字母也由隨機數來控制。產生指定范圍內的隨機數公式為:int((上限-下限+1)*rnd)+下限。
25.【答案】j=1;a(j)=i或a(j)=n;i=i+1;Label2.Caption+Str(a(k))
【知識點】算法的控制結構;過程與自定義函數
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click()
Dim a(1 To 13) As Integer, i As Integer, j As Integer, n As Integer
For i=1 To 13 ‘使用i來控制循環,i的初值為1,終值為13,步長為1,本循環用于初始化數組a
a(i)=0 ‘將數組a的第i個元素值設為0
Next i
i=1:n=0:j=1 ‘初始化變量i、n和j的值
Do While i<=13 ‘如果i值小于等于13時進行循環
Do While True ‘永真循環
If j>13 Then 1 ‘如果j值大于13時則將j值重新初始化為1,故本處答案填寫:j=1
If a(j)=0 Then n=n+1 ‘如果數組元素a(j)的值為0則將n值增1
If n=i Then ‘如果n值和i值相同時則進行如下處理
2 ‘將i值(n值也可)賦給數組元素,故本處答案填寫: a(j)=i或a(j)=n
n=0 ‘將n值初始化為0
Exit Do ‘跳出內層循環
End If ‘結束條件判斷
j=j+1 ‘將j值增1
Loop ‘結束內層循環
3 ‘將i值增1,故本處答案填寫:i=i+1
Loop ‘結束內層循環
Label1.Caption="原來牌的順序是:" ‘使用標簽1輸出“原來牌的順序”
For k=1 To 13 ‘使用k來控制循環
Label2.Caption = 4 ‘將數組a的每個元素使用標簽2輸出,故本處答案填寫: Label2.Caption+Str(a(k))
End Sub
由以上程序分析知,1處為:如果j值大于13時則將j值重新初始化為1,故本處答案填寫:j=1。
2處為:將i值(n值也可)賦給數組元素,故本處答案填寫: a(j)=i或a(j)=n 。
3處為:將i值增1,故本處答案填寫:i=i+1。
4處為:將數組a的每個元素使用標簽2輸出,故本處答案填寫: Label2.Caption+Str(a(k))
【分析】本題為一道計算牌的原來順序的程序題。本題由兩層循環組成,外層循環用于表示牌的個數,內層循環是進行牌的排序,原理就是按出牌順序計算其前面的牌的個數有多少,然后在數組中一個一個數進行填寫,計數時如果超過13,則從1號開始接著數,直到每一張牌排好序為止。
26.【答案】(1)1
(2)i=i+1;a=Val(Mid(key,1,i-1))
(3)B
【知識點】查找算法及程序實現
【解析】【解答】(1)添加標簽對象使用標簽控制,1為標符控件,2為文本框控件,3為命令按鈕控件。故本題答案填寫:1。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim key As String
Dim a As Integer, b As Integer, ans As Integer, ch As String
key=Text1.Text ‘將從文本框1中輸入的字符串賦給變量key
i=1 ‘將控制變量i賦初值1
Do While i<=Len(key) ‘使用i來控制循環,i的終值為字符串key的長度
ch=Mid(key,i,1) ‘從字符串key中按i值中取一個字符并賦給變量ch
If ch>="0" And ch<="9" Then ‘如果ch為字符型數字則進行如下處理
1 ‘將i值增1,故本處答案填寫:i=i+1
Else ‘否則(ch不是字符型數字)進行如下處理
Exit Do ′退出循環
End If ‘結束條件判斷
Loop ‘結束循環
2 ‘按i值從字符串key的第一個字符取i-1個字符(第i個字符為“+”號),并轉為數值型賦給變量a,故本處答案填寫: a=Val(Mid(key,1,i-1))
b=Val(Mid(key,i+1,Len(key)-i)) ‘將“+”號后面的字符從字符串key中取出來轉為數值型并賦給變量b
ans=a+b ‘將a和b之和賦給變量ans
Label1.Caption="算式計算結果為:"+Str(ans) ‘使用標簽1輸出a和b之和
End Sub
由以上程序分析知,1處為:將i值增1,故本處答案填寫:i=i+1。
2處為:按i值從字符串key的第一個字符取i-1個字符(第i個字符為“+”號),并轉為數值型賦給變量a,故本處答案填寫: a=Val(Mid(key,1,i-1)) 。
(3) 在文本框中輸入“123+10” ,“+”號的位置為第4個,只有在字符串中中取4次才能檢查到“+”號,故答案選B。
【分析】本題是一道從文本框1中輸入加法并將結果顯示出來的程序題。本題的思路是查找“+”號的位置然后將字符串分成兩部分,并將其取出來轉為數值型并求其和。查找“+”號的方法是從字符串key中逐位查找,如果為數字則將i值增1,如果不是數字則退出循環,i值就是“+”號的位置。
27.【答案】(1)Text
(2)ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then;p=0
(3)溢出
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;查找算法及程序實現
【解析】【解答】(1) 若要將文本框的默認值設為空,則應設置文本框的文本屬性為空串,故本小題答案填寫:Text。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim s As String, a As String, b As String
Dim p As Integer, sum As Integer
s=Text1.Text + "e" ′將文本框1中輸入的字符串加一個結尾非數字字符 ”e“后賦給變量s
i=1 ‘給循環控制變量i賦初值1
p=0 ‘初始化變量p,p用于存放字符型數字轉為數值后的值
sum=0 ‘初始化累加器變量sum
Do While ia=Mid(s,i,1) ‘按i值從字符串s中取出一個字符并賦給變量a
b=Mid(s,i+1,1) ‘按i值(i值后面一位)從字符串s中取出一個字符并賦給變量b
If (a>="0" And a<="9") And (b>="0" And b<="9") Then ‘如果a和b都是字符型數字則進行如下處理
p=p*10+Val(a) ‘將原p值擴大10倍后加上變量a轉為數值型的值,即將數字a做為個數加到變量這的右邊
1 ‘否則如果a為字符型數字,b為非字符型數字時,進行如下處理,故本處答案填寫: ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then
p=p*10+Val(a) ‘將原p值擴大10倍后加上變量a轉為數值型的值,即將數字a做為個數加到變量這的右邊
sum=sum+p ‘將p值累加到變量sum中
2 ‘將p初始化為0,以便存儲下一個字符型數字,故本處答案填寫:p=0
i=i+1 ‘將i值增1,此處相當于按循環控制變量i的步長值改變變量
End If ‘結束條件判斷
i=i+1 ‘將i值增1,此處相當于按循環控制變量i的步長值改變變量
Loop ‘結束循環
Text2.Text=Str(sum) ‘在文本框2中輸出各字符型數字轉為數值后之和
End Sub
由以上程序分析知,1處為:否則如果a為字符型數字,b為非字符型數字時,進行如下處理,故本處答案填寫: ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then 。
2處為:將p初始化為0,以便存儲下一個字符型數字,故本處答案填寫:p=0。
(3) 若輸入字符串是“a2b056789bc8” ,則sum=2+56789+8=56799,而sum定義為了整型變量,整型變量的取值范圍為-32768-32767,則程序報”溢出“錯誤,故答案填寫: 溢出 。
【分析】本題為一道從字符串中查找出字符型數字,并按其由非數字型字符分隔的值計算其和的程序題。本題的思想是從字符串中按順序取出兩個字符,如果兩個字符都是數字,則將左邊的數字轉為數值型并做為個位放到變量p中,如果兩個字符為一個數字,一個字母則將前一個放到變量p的個位并將p值累加到變量sum中,同時將p初始化為0,然后以此類推進行查找直到將整個字符串查找完為止。最后將sum值輸出。
28.【答案】i=2;c=Chr(Asc(c)-32);dzb_h(xbxh)=c;f_c+dzb_h(17-xbxh)
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
Private Sub fx_cmd_Click()
Dim dzb_h(1 To 16) As String
Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String
dzb_h(1)="0":dzb_h(2)="1":dzb_h(3)="2":dzb_h(4)="3":dzb_h(5)="4":dzb_h(6)="5":dzb_h(7)="6"
dzb_h(8)="7":dzb_h(9)="8":dzb_h(10)="9":dzb_h(11)="A":dzb_h(12)="B":dzb_h(13)="C"
dzb_h(14)="D":dzb_h(15)="E":dzb_h(16)="F" ‘給數組dzb_h的每一個元素進行賦值,dzb_h中存放的為十六進制數的數碼
o_c=o_c_txt.Text ‘將從文本框o_c_txt中輸入的字符串賦給變量o_c
1 ‘使用i控制循環,字符串o_c的第一個字符為#號,不用轉換為十六進制,i的初值為2,故此處答案填寫: i=2
f_c="#" ‘初始化轉換后的十六進制代碼為“#”號
Do While i<=Len(o_c) ‘使用i來控制循環,在i小于等于字符串o_c的長度時進行循環
c=Mid(o_c,i,1) ‘按i值從字符串o_c中中取一個字符,并賦給變量c
If Asc(c)>96 Then 2 ‘如果c的ASCII值大于96(其為小寫字符)進行如下處理,將其變為大寫字母,故此處答案填寫: c=Chr(Asc(c)-32)
xbxh=1 ‘給循環變量xbxh設置初值1
Do While xbxh<17 ‘如果xbxh值小于17時進行循環
If 3 Then ‘如果數組的某個元素值與字符c值相等時則進行如下處理,故此處答案填寫: dzb_h(xbxh)=c
f_c= 4 ‘求出c的反碼并合并到變量f_c中,故此處答案填寫: f_c+dzb_h(17-xbxh)
Exit Do
End If
xbxh=xbxh+1 ‘將循環變量值增1
Loop
i=i+1 ‘將i值增1
Loop
f_c_lab.Caption=f_c ‘使用標簽f_c_lab輸出變量f_c的值
End Sub
由以上程序分析知,1處為:使用i控制循環,字符串o_c的第一個字符為#號,不用轉換為十六進制,i的初值為2,故此處答案填寫: i=2。
2處為:如果c的ASCII值大于96(其為小寫字符)進行如下處理,將其變為大寫字母,故此處答案填寫: c=Chr(Asc(c)-32)。
3處為:如果數組的某個元素值與字符c值相等時則進行如下處理,故此處答案填寫: dzb_h(xbxh)=c。
4處為:求出c的反碼并合并到變量f_c中,故此處答案填寫: f_c+dzb_h(17-xbxh)。
【分析】本題為一道求十六進制反碼的程序填空題。本題的思路中將十六進制數碼存入一個16個元素的數組中,然后將從文本框中輸入數據逐位核對數組元素的值,如果相同,則將17減去該元素的下標得到的下標值即為其反碼值,然后將其反碼合并到變量f_c,最后f_c即是文本框1中的反碼值。
29.【答案】(1)2
(2)t=Abs(n);s=Str(r)+s
(3)11100100
【知識點】運算符、基本運算與表達式
【解析】【解答】(1)由圖b可知,1為標簽控件,2為文本框控件,3為命令按鈕控件,4為列表框控件。故答案填:2。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim n As Integer, t As Integer
Dim r As Integer, c As Integer
Dim s As String
n=Val(Text1.Text)
1 ‘將變量n的絕對值賦給變量t,故此處答案填寫: t=Abs(n)
s=”” ‘初始化字符串變量s的值為空
Do While t>0 ‘在t不等于0時進行循環
r=(t+1) Mod 2 ‘將t值加1后再除以2要其余數,結果是求t的反碼
2 ‘將r值轉為字符型后放到字符串s的左側,故此處答案填寫: s=Str(r)+s
t=t\2 ‘將t值除以2后的整數商重新賦給變量t
c=c+1 ‘將c值增1,c為計數器,統計t轉為二進制數后的位數
Loop ‘結束循環
For i=1 To 8-c ‘使用i來控制循環,i的初值為1,終值為8-c,該循環用于給不足8位的二進制數前補符號“1”
s=CStr(1)+s ‘將1轉為字符型后放置到變量s的左邊
Next i
Label1.Caption=” 十進制數”+CStr(n)+”的二進制反碼為”+s
End Sub
由以上分析知,1處為:將變量n的絕對值賦給變量t,故此處答案填寫: t=Abs(n) 。
2處為:將r值轉為字符型后放到字符串s的左側,故此處答案填寫: s=Str(r)+s 。
(3)-27的絕對值為27,27的二進制碼為: 11011,其反碼為00100,前補符號位為: 11100100 ,故本題答案填寫: 11100100 。
【分析】本題為一道求十進制數反碼的程序填寫題。其算法過程為,先將十進制數求其絕對值,然后將其絕對值求反碼,求反碼采用除二取余法,這與十進制數轉二進制數相同,不是的是每次求其對應的二進數時加上一個1,這樣求出來的二進制數不是原碼而是補碼,然后將其合并到變量s中,不足8位的前補負號符“1”。
30.【答案】(1)ans(i+j-1)+b(i)*a(j);ans(i) Mod 10;length
(2)5
【知識點】常見數據類型、數組
【解析】【解答】(1)本題程序分析如下:
Dim a(1 To 30)As Integer, b(1 To 30) As Integer, ans (1 To 60) As Integer
Dim La As Integer, Lb As Integer, length As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, temp As String
'將兩個乘數(正整數)各數位上的數字按照上述算法依次存入數組a和b,每個正整數位數分別保存到變量La和Lb;將保存結果的數組ans(i)值初始化為零(該部分程序代碼略)
For i=1 To Lb
For j=1 To La
ans(i+j-1) = 1 ‘將兩數的乘積放于數組ans中,故此處答案應填寫: ans(i+j-1)+b(i)*a(j)
Next j
Next i
For i=1 To La+Lb ‘使用i來控制循環,i的初值為1,終值為la和lb的和,步長為1,該循環用來處理進位問題
ans(i+1)=ans(i+1)+ans(i)\10 ‘將數組元素i除以10的整數商加到其后的元素中,以此表示進位
Mod 10
ans(i)= 2 ‘將本數組元素除以10后的余數重新賦給該元素,表示這個元素進位后本位上的數,故此處答案填寫: ans(i)
Next i
length=La+Lb ‘計算乘積的長度值并賦給變量length
Do While ans(length)=0 ‘如果數組元素的最后一個元素值為0時進行循環
length=length-1 ‘將積的長度減1
Loop ‘結束內層循環
For i= 3 To 1 Step -1 ‘使用i來控制循環,i的初值為ans的length元素值,終值為1(因為數組是由低位到高位排序的,輸出時由高位到低位輸出),步長值為1,故本處答案填寫: length 。
Label4.Caption=Label4.Caption&Str(ans(i))
Next i
End Sub
由以上程序分析知:1處為將兩數的乘積放于數組ans中,故此處答案應填寫: ans(i+j-1)+b(i)*a(j) 。
2處為:將本數組元素除以10后的余數重新賦給該元素,表示這個元素進位后本位上的數,故此處答案填寫: ans(i) Mod 10 。
3處為:使用i來控制循環,i的初值為ans的length元素值,終值為1(因為數組是由低位到高位排序的,輸出時由高位到低位輸出),步長值為1,故本處答案填寫: length 。
(3) 5125*18 =92250,故其length值為5,本題答案填寫:5。
【分析】在進行多位數乘法時先將其乘積放于數組ans中,然后逐位處理其進位問題,最后調整兩個數之積的長度值。兩數的 精確值存儲在數組ans中,最后由高位到低位輸出。
1 / 1浙教版高一信息技術 專題五:VB程序設計
一、單選題
1.某算法的部分流程圖如圖所示。執行這部分流程,分別輸入35、50、60,則輸出值依次為(  )
A.10,3 B.10, 4 C.7, 10, 4 D.10, 12,3
【答案】B
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖可知:i=1,m=5,i值小于3執行循環,第一次循環:g=35,r=g/m=35/5=7,r不在r大于7和小于等于10之間,將i值增1后判斷i值,i=2,小于3,執行第二次循環:g=50,r=g/m=50/5=10,r在r大于7和小于等于10之間,故將r的值10輸出,然后將i值增1后進行判斷,r=3故符合循環條件r小于等于3的循環條件,繼續循環,第三次循環:g=60,r=g/m=60/5=12,r不在r大于7和小于等于10之間,不進行輸出,將i增1后進行判斷,此時i=4超過了終值3,故循環,輸出i值4,由上分析知,該程序共輸出一個r值10和一個i值4。故答案選B。
【分析】本題考查的是使用流程圖表示算法。在使用流程圖表示算法中,要注意流程圖中各框圖的含義及流程線的走向。尤其是使用判斷框和流程線組成的循環結構。
2.某算法部分流程圖如圖所示。執行這部分流程,依次輸入7、-5、12、0,則輸出值是(  )
A.12 B.17 C.-20 D.5
【答案】B
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖可知:i=1,a=10,b=-10,i值為1小于4。
執行第一次循環:c=7,c=7b=-10條件成立,b=c=7,將i值增1判斷其是否小于等于4,i=2條件成立;
執行第二次循環:c=-5,cb=7條件不成立,將i值增1,i=3<=4條件成立;
執行第三次循環:c=12,12b=7條件成立,b=c=12,將i值增1,i=4>=4成立;
執行第四次循環,c=0,c=0b=12,條件不成立,不改變b值,將i值增1,i=5大于4,退出循環。
最終輸出b-a的值,b=12,a=-5,b-a=17。故答案選B。
【分析】本題考查的是由流程圖表示算法。本流程圖是由一個單層循環和兩個條件判斷語句構成。循環使用i來控制,條件判斷是判斷a和c的值以及c和b的值,如果c值大于a值則將c值賦給a,如果c值小于b則將c的值賦給b,在循環終了將b-a的值輸出。
3.(2019高二上·臺州月考)某算法的部分流程圖如圖所示,以下說法正確的是(  )
A.該流程執行后,變量k的值是-1
B.該流程執行后,變量a的值是16
C.該流程用于計算并輸出1+8-16的值
D.該流程完整執行1次,“a<32 ”共執行了3次
【答案】D
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】A選項,該流程執行后,變量k的值是1,A選項錯誤;B選項,該流程執行后,變量a的值是32,B選項錯誤;C選項,該流程用于計算并輸出1+8+0的值 ,C選項錯誤;D選項,該流程完整執行一次,“a<32"共執行3次,分別是a=8,a=16和a=32,D選項正確,故答案選D。
【分析】此題考查VB選擇、循環結構的執行。
4.某算法的部分流程圖如圖所示,執行這部分流程后,下列說法正確的是(  )
A.變量n,x的值分別是6,1 B.變量n,x的值分別是1,6
C.步驟x←x/2的執行次數是4 D.步驟n←n+1的執行次數是6
【答案】C
【知識點】算法的常用表示方法;算法的控制結構
【解析】【解答】由流程圖知:x=5,n=0,如果x不等于1時進行循環,x為5不等于1,執行第一次循環:判斷x是否為偶數,x=5不為偶數,故x=3*x+1=3*5+1=16,將n值增1(n為計數器,用于統計循環次數):n=0+1=1。判斷x值,x=16<>1,執行第二次循環:x=16為偶數,執行x=x/2=16/2=8,將n值增1,n=1+1=2,判斷x值,x=8<>1。執行第三次循環:x=16為偶數,執行x=x/2=8/2=4,將n值增1,n=2+1=3。判斷x值,x=4<>1,執行第四次循環:x=4為偶數,執行x=x/2=4/2=2,將n值增1,n=3+1=4。判斷x值,x=2<>1,執行第五次循環:x=2為偶數,執行x=x/2=2/2=1,將n值增1,n=4+1=5。判斷x值,x=1<>1條件不成立,結束循環,輸出n和x值:5和1。
由程序分析知,n和x值為5和1,不是6和1,選項A、B錯誤;本題共循環5次,但第一次x為奇數,x=x/2執行了四次,選項C正確;n值為5,故 n←n+1 初執行了5次,選項D錯誤。故答案選C。
【分析】本題考查的是使用流程圖表示算法,以特定的圖形符號加上說明,表示算法的圖,稱為流程圖或框圖。使用圖形表示算法的思路是一種極好的方法,因為千言萬語不如一張圖。
5.下列VB表達式的值等于2016的是(  )
A.2016 Mod 2^20/10 B.Len(”2015”)+1
C.Str(2008)+”8” D.Mid(”20160501”,1,4)
【答案】A
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:2016 mod 2^20/10=2016 mod 1048576/10=2016 mod 104857.6=2016,選項B: Len(”2015”)+1 =4+1=5,選項C: Str(2008)+”8” =“2008”+“8”=“20088”,選項D: Mid(”20160501”,1,4) =“2016”。故答案選A。
【分析】本題考查的是常用的標準函數的功能及數學運算符的含義。mod是求余符號,^是乘方符號,len()函數是求字符串的長度,str()函數是將數值型轉為字符串,mid()函數是從字符串中截取一個指定長度的子串。
6.在Visual Basic中,下列表達式的值等于2的是(  )
A.Int(2.1) B.Abs(-2.1)
C.Sqr(2.1) D.Len(”2.1”)
【答案】A
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:int(2.1)=2,選項B:abs(-2.1)=2.1,選項C: Sqr(2.1) =1.44914,選項D: Len(”2.1”) =3。故答案選A。
【分析】本題考查的是常用標準函數的功能。int()是求不大于參數的整數,abs()是求參數的絕對值,sqr()是求參數的算術平方根。len()函數是求字符串參數的長度。
7.(2016高二上·杭州期末)能得到一個大于等于20且小于50隨機整數的VB表達式是(  )
A.Int(rnd*50)-20 B.Int(rnd*30+20)
C.Int(rnd*31+20) D.Int(rnd*30)+1
【答案】B
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A:表達式產生的隨機整數的范圍為【-20,29】;選項B:表達式產生的整數的范圍為【20,49】;選項C:表達式產生的隨機整數的范圍為【20,50】;選項D:表達式產生的隨機整數的范圍為【1,30】。故答案選B。
【分析】本題考查的是產生指定范圍內的隨機整數的公式。其公式為:int((上限-下限+1)*rnd)+下限。
8.在VB中,如果a=1, b=0, c=-1,那么下列表達式值為假的是(  )
A.(a>b) And (b>c) B.(a>-c) And (b>a)
C.(ac) D.(a>c) Or (b=a)
【答案】B
【知識點】運算符、基本運算與表達式
【解析】【解答】選項A: (a>b) And (b>c) 可化為(1>0) and (0>-1) 可化為 true and true,其值為true,選項B:(a>-c)and(b>a)可化為(1>-(-1)) and (0>1) 可化為false and false ,結果為false。選項C: (ac) 可化為(1<0) or (0>-1) 可化為false and true。選項D: (a>c) Or (b=a) 可化為(1>-1) or (0=1) 可化為false or true,其值為true,故答案選B。
【分析】本題考查的是邏輯表達式的運算,邏輯表達式就是使用邏輯運算符將關系表達式連接起來的式子。邏輯運算符有三個:not、and和or。not是將邏輯值求反,and的兩邊只要有一個false其值為false,or的兩邊只要有一個true,其值為true。
9.在VB中,已知整數n≥100,下列與語句b = n \ 10 Mod 10功能相同的是(  )
A.b = (n Mod 100) \ 10 B.b = n Mod 10 \ 10
C.b = (n Mod 10) \ 100 D.b = n \ 100 Mod 10
【答案】A
【知識點】常量、變量及變量的賦值
【解析】【解答】由題義知: b = n \ 10 Mod 10 是先將n值整除以10后(其值為去掉個位數后的數)再除以10要余數,結果為n十位上的數字并賦給變量b。選項A:將n值整除以100后的整數商再整除以10,結果為n十位上的數,賦給變量h。選項B:選將n值除以10后要余數,結果為n的個位上的數,再除以10后要整數商,結果為0,并將0賦給變量b。選項C:先將n除以10后要余數,結果為n個位上的數,再將其除以100后要整數商,結果為0,并將0賦給變量C。選項D:先將n除以100后要整數商,結果為去掉n的后兩位的數,再將商除以10后要余數,結果為n的百位上的數,并將該數賦給變量b,故答案選A。
【分析】本題考查的是將一個整數的十位上的數取出來的方法。其方法可以有兩種:一種為先去掉個位上的數后再除以10取余數。另一種是去掉十位數以前的數位(除以100取余)后除以10要整數商。
10.一個VB工程的部分設計界面如下圖所示:
下列選項正確的是(  )
A.窗體的Caption屬性值是“對象”
B.窗體文件名是“Form1.frm”
C.當前選中對象的名稱是“Shape”
D.工程的名稱是“我的工程”
【答案】A
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用
【解析】【解答】選項A:由圖可以看出,該窗體的標題為“對象”,即其caption值為“對象”,本項對。選項B:窗體的文件名為“myform.frm”而不是 “Form1.frm” ,本項錯。選項C:當前選中的對象名稱為“shape1”,其類名為“shape”,本項錯。選項D:本工程的工程名為“工程1”,其工程文件名為“我的工程.vbp”,本項錯。故答案選A。
【分析】本題考查的是對象名和類名。對象是由類生成的,對象名和類名是不同的,盡管兩者相似但是不同的,一般對象名是由類名加數字來定義的。
11.某VB程序的一個事件過程代碼如下:
Private Sub Command1_Click()
Dim u As Single, x As Single, y As Single, z As Single
u=Val(Text1.Text)
x=(u+10)/(u*u+8)
y=(u-1)/(x+u)
z=Sqr(x-y)
Text2.Text=Str(z)
End Sub
程序運行時,在文本框Text1中輸入-1,單擊命令按鈕Command1,彈出如圖所示的錯誤提示信息。產生此錯誤的語句是(  )
A.u=Val(Text1.Text) B.x=(u+10)/(u * u+8)
C.y=(u-1)/(x+u) D.z=Sqr(x-y)
【答案】C
【知識點】程序的調試及運行
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click() ‘命令按鈕單擊事件過程開始
Dim u As Single, x As Single, y As Single, z As Single ‘定義單精度變量u、x、y和z
u=Val(Text1.Text) ‘將從文本框1中輸入的字符串轉為數值型并賦給變量u
x=(u+10)/(u*u+8) ‘根據u值來計算x值
y=(u-1)/(x+u) ‘根據x和u的值來計算y值
z=Sqr(x-y) ‘計算x-y的算術平方根并賦給變量z
Text2.Text=Str(z) ‘在文本框2中輸出z值
End Sub ‘結束事件過程
由以上分析,如果 文本框Text1中輸入-1 ,則u=-1,x=(u+10)/(u*u+8) =(-1+10)/(-1*-1+8)=9/9=1,y=(u-1)/(x+u) =(-1-1)/(1+(-1))=1/0,此時0作了除數,報錯。故答案選C。
【分析】本題考查的是VB常見的程序報錯原因分析。在本題是使用0作了除數,其他的還有“for沒有next“是循環語句缺少結束語句或在其中的嵌套條件判斷語句缺少結束語句。”下標越界“是使用的數組元素的下標超過了定義的數組元素的下標(大于了上限或小于了下限)。”溢出“是使用的數值型變量的值超過了其類型表示的數的范圍。”類型不匹配“給變量賦值的類型不是其定義的數據類型或標準函數的參數使用的類型不是其要求的類型。
12.有如下VB程序段:
x=-4.2
y=Abs(Int(x))
If x>0 And x<5 Then
y=y+1
Else
y=y-1
End If
該程序段運行后,y的值為(  )
A.3 B.4 C.5 D.6
【答案】B
【知識點】算法的控制結構;運算符、基本運算與表達式
【解析】【解答】本題程序分析如下:
x=-4.2 ‘將x賦值為-4.2
y=Abs(Int(x)) ‘求x的整數的絕對值,故y=Abs(Int(x))=Abs(Int(-4.2 ))=abs(-5)=5
If x>0 And x<5 Then ‘如果x大于0且x小于5時進行如下處理
y=y+1 ‘將y值增1
Else ‘否則(即x值不在0和5之間時)進行如下處理
y=y-1 ‘將y值減1
End If ‘結束條件判斷
在本題中,由于x=-4.2不在0和5之間,故將y值減1,而y值為5,故答案選B。
【分析】本題考查的是int()函數和abs()函數及選擇語句的的用法,int是求不大于參數的整數,如果參數為正數,則將小數部分截去,如果為負數則將其整數部分減去1.abs()是求參數的絕對值。選擇語句是根據條件來選擇執行某條或某些語句而跳過另外一些語句。
13.如下VB程序段:
x=Val(Text1.Text)
If x>3 Then
If x<=6 Then y=2*x
Else y=3*x
Else
y=4*x
End If
Print y
若程序運行時在文本框Text1中輸入6,則y的值是 (  )
A.24 B.18 C.12 D.6
【答案】C
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
x=Val(Text1.Text) ‘將從文本框1中輸入的字符型轉為數值型并賦給變量x
If x>3 Then ‘如果x值大于3則進行如下處理
If x<=6 Then ‘如果x小于等于6則進行如下處理
y=2*x ‘將x的2倍賦給變量y
Else ‘否則(即x大于6進)進行如下處理
y=3*x ‘將x的3倍賦給變量y
endif ‘結束內層條件判斷
Else ‘否則(即x值小于等于3時)進行如下處理
y=4*x ‘將x的4倍賦給變量y
End If ‘結束外層條件判斷
Print y ‘輸出y值
由以上分析知,當x=6時,執行y=2*x=2*6=12,故答案選C。
【分析】本題考查的是多分支條件判斷語句。在有多種的情況(三種以上)需要作判斷處理時,可以使用多分支語句結構,多分支語句結構可以對應四種語句:一種是單分支語句的簡單羅列,即逐條進行判斷,二是進行雙分支語句的嵌套,三是使用if……elseif……else……end if語句,四是使用select case語句。在多分支語句中一般只有一個條件下的語句得到了執行,其他條件下的語句都跳過。
14.下列VB程序運行時,在文本框Text1中輸入"Basic",單擊命令按鈕Command1后,文本框Text2中顯示的是 (  )
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s1 As String, s2 As String, c As String
s1=Text1.Text
s2=” ”
n=Len(s1)
For i=1 To n
c=Mid(s1,i,1)
s2=c+s2
Next i
Text2.Text=s2
End Sub
A.cisaB B.csBai C. Basic D.aicsB
【答案】A
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s1 As String, s2 As String, c As String
s1=Text1.Text ‘將從文本框1中輸入的字符賦給變量s1
s2=” ” ‘初始化字符串變量s2
n=Len(s1) ‘將字符串s1的長度賦給變量n
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1
c=Mid(s1,i,1) ‘按i值從字符串s1中取出一個字符并賦給變量c
s2=c+s2 ‘將字符合并到字符串s2的左側
Next i
Text2.Text=s2
End Sub
由以上程序分析知,該程序是從字符串1從左到右將字符取出來,然后將字符串從右向左合并到字符串s2中,即s2是s1的倒串,從文本框1中輸入 "Basic" ,故輸出值為“cisaB”,故答案選A。
【分析】本題考查的是將一個字符串倒序輸出的算法,在將字符串倒序時,要逐位從原串中取出來,然后逐位合并到一個空串的左側。
15.有如下VB程序段:
Max=-10000
For i=1 To 10
s=0
For j=i To 10
s=s+a(j)
If s>max Then max=s
Next j
Next i
已知數組a(1)到a(10)的原始數據為6,-6,8,-7,7,2,-2,-1,-2,4。程序執行后,變量max的值為(  )
A.9 B.10 C.27 D.4
【答案】B
【知識點】算法的控制結構
【解析】【解答】分析程序段可知,max中存儲的是連續幾個數組元素相加的最大值。當數組原始數據為6,-6,8,-7,7,2,-2,-1,-2,4時,8,-7,7,2相加和最大,其值為10,所以程序執行后,變量max的值為10。故答案選B。
【分析】本題考查嵌套For循環的理解以及對程序段的解讀。
16.(2017高二下·浙江開學考)有如下程序段:
a(1)=False
For i = 2 To 20
a(i) = True
Next i
For i = 2 To 20
If a(i) = True Then
For j = 2 To 20 \ i
a(i * j) = False
Next j
End If
Next i
t = 0
For i = 1 To 20
If a(i) = True Then
t = t + 1
End If
Next i
經過該程序段運行后,變量t的值為(  )
A.5 B.6 C.7 D.8
【答案】D
【知識點】常量、變量及變量的賦值
【解析】【解答】本題程序分析如下:
a(1)=False ‘將數組a的第一個元素值賦值為false。
For i = 2 To 20 ‘使用i控制循環對數組a的第二個元素到第二十個元素進行賦值。
a(i) = True ‘將數組a的第i的元素賦值為true。
Next i ‘結束循環
For i = 2 To 20 ‘使用i來控制循環來處理數組元素的第2個元素到第20個元素
If a(i) = True Then ‘如果數組a的第i個元素值為true時進行如下處理
For j = 2 To 20 \ i ‘使用j來控制循環,j值為從第二個元素到20整除i個元素
a(i * j) = False ‘將第i*j個元素的值賦值為false
Next j ‘結束內層循環
End If ‘結束條件判斷
Next i ‘結束外層循環
t = 0 ‘初始化計處器t的值為0
For i = 1 To 20 ‘使用i來循環循環
If a(i) = True Then ‘如果第i個數組元素的值為true時進行如下處理
t = t + 1 ‘ 使用t進行計數
End If ‘ 結束判斷
Next i ‘結束循環
由以上分析知當i為2時,j為2到10,將false賦給的元素為(只寫下標):4、6、8、10、12、14、16、18、20,i為3時,j為2到6,為false的數組元素的下標為:9、15,i值為4時,j由2到5,沒有賦新值,當i值為5時,j值為2到4,沒有賦新值,當i為6時,j值為2到3,沒有重賦新值,當i值為7時,j值為2到2,沒有賦新值,當i值為8、9、10時,j值為2,沒有賦新值,當i值為11-20時內層沒有進行循環故沒有賦新值,由上可知值為false的有a(1)、a(9)、a(15)及所有除了下標為2的偶數數組元素,故值為false的數組元素個數為9+3=12個,值為true的數組元素個數為8個。故答案選D。
【分析】本題為一道選將數組元素的值按一定的規則進行賦值然后統計數組中特殊值的程序設計題。在本題中主要應用了計數器進行統計。
17.某VB程序段如下:
i=1:j=10:temp=a(5)
Do While a(j)>temp
j=j-1
Loop
Do While a(i)i=i+1
Loop
temp=a(i):a(i)=a(j):a(j)=temp
數組元素a⑴到a(10)的值依次為“36 91 36 17 93 99 2 9 97 97”,執行該程序段后,a(5)的值為(  )
A.93 B.9 C.36 D.97
【答案】B
【知識點】算法的控制結構
【解析】【解答】分析程序段運行過程:
第一個Do While循環執行結束后,j的值是8;
第二個Do While循環執行結束后,i的值是5;
繼續執行語句temp=a(i),temp=a(5)=93;a(i)=a(j),a(5)=a(8)=9;a(j)=temp,a(8)=temp=93。
所以執行該程序段后,a(5)的值為9。故答案選B。
【分析】本題考查對Do While循環語句的理解。
語句格式:
Do While 條件表達式
循環體(語句序列)
Loop
18.下列程序執行后變量c的值(  )
s="ABC123":i=1
Do While i<=6
ch=Mid(s,i,1)
If ch>="0" And ch<="9" Then c=c+1
i=i+1
Loop
A.1 B.2 C.3 D.4
【答案】C
【知識點】算法的控制結構
【解析】【解答】觀察Do While循環體,當ch>="0" And ch<="9"時,即ch是數字字符時,統計變量c的值加1。因為變量s="ABC123",其中包含3個數字字符,所以最終c的值是3。故答案選C。
【分析】本題考查對Do While循環語句及條件語句的理解。
二、綜合題
19.編寫VB程序,界面設計如圖所示,使其具有下列功能:在文本框Text1中輸入一個小于20的正整數n,單擊“計算”按鈕Command1,計算斐波那契數列中第n項的值,并在標簽Label2中輸出結果;若輸入錯誤,則在標簽Label2中顯示相應的提示信息。(斐波那契數列是指這樣的數列:1,1,2,3,5,8,13…。即:第1項和第2項的值均為1,從第3項開始,每一項的值是它前面兩項之和)
(1)代碼“Private Sub
Command1_Click()”中的Command1 是   (單選,填字母:A .對象名/B .屬性名/C .屬性值/D .事件名)。
(2)為實現上述功能,請在劃線處填入合適的代碼。
Private Sub Command1_Click()
Dim n
As Long,k As Integer
Dim
f1 As Long,f2 As Long,f As Long
   
If
n>=20 Or n<=0 Then
Label2.Caption=”輸入的數據有誤”
Else
If
n<=2 Then ‘第1,2個元素的值都為1
f=1
Else
f1=1
f2=1
For
k=3 To n
f=f1+f2
f1=f2
f2=f
Next
k
End
If
Label2.Caption
= ”斐波那契數列第” + Str(n) + ”項的值為” +    
End
If
End Sub
(3)若在文本框Text1.Text輸入21,則標簽Label2顯示的內容為   。
【答案】(1)A
(2)n=Val(Text1.Text);Str(f)
(3)輸入的數據有誤
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值;過程與自定義函數
【解析】【解答】(1)Command1是按鈕的對象名,Command1_Click是事件名。故答案為:A。
(2)1處語句是獲取文本框Text1中輸入的正整數n的值,即n=Val(Text1.Text);
2處語句是輸出斐波那契數列第n項的值,該值保存在變量f中,所以該處語句為Str(f)。
故答案為:n=Val(Text1.Text);Str(f)。
(3)當n>20時,Label2中顯示“輸入的數據有誤”。故答案為:輸入的數據有誤。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
20.小明編寫了一個VB程序,功能如下:輸入一個不超過30000的正整數,把它分解成質因子相乘的形式,如36=1*2*2*3*3,17=1*17。程序運行時,在文本框Text1中輸入一個整數,單擊“整數分解”按鈕Command1后,在標簽Label3中顯示該整數的分解結果。程序行界面如圖所示。
(1)若輸入待分解的整數為 45,則分解結果為:   。
(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。
Private
Sub Command1_Click()
Dim i As Integer, n As Integer
Dim s As String
   
s="1"
i=2
Do While i<=Val(Text1.Text)
If    
Then
n=n\i
s=s+"*"+Str(i)
Else
   
End
If
Loop
Label3.Caption=Text1.Text+"="+s
End Sub
【答案】(1)45=1*3*3*5
(2)n=Val(Text1.Text);n Mod i=0;i=i+1
【知識點】常量、變量及變量的賦值;過程與自定義函數
【解析】【解答】(1)分解整數45的過程:計算45除2,不能整除;計算45除3,等于15,得知3是45的一個因子;繼續15除2,不能整除;15除3,等于5,因此3和5是45另外兩個因子。所以整數45分解結果為45=1*3*3*5。故答案為:45=1*3*3*5。
(2)1處語句是獲取Text1中待分解整數n,所以n=Val(Text1.Text);
2處語句是判斷條件,當i能夠被n整除時,即n Mod i=0時,說明i是n的一個因子;
3處語句表示若當前i不能被n整除,則i=i+1,繼續下次循環。
故答案為:n=Val(Text1.Text);n Mod i=0;i=i+1。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
21.用VB編寫正整數十進制轉換為十六進制的程序,運行界面如圖所示。程序功能如下:在文本框Text1中輸入待轉換的十進制值,單擊“十進制轉換十六進制”按鈕Command1,在文本框Text2中輸出轉換結果。
(1)要使命令按鈕Command1顯示的文本改為“十進制轉換十六進制”,可在其屬性窗口中將   屬性的屬性值修改為“十進制轉換十六進制”。
(2)若在文本框Text1中輸入79,則文本框Text2中輸出的值是   。
(3)請在程序的劃線處填寫合適的代碼。
Private
Sub Command1_Click()
Dim a As String,s
As String
Dim r As Integer,x
As Integer
x=Val(Text1.Text)
s=""
Do While x>0
   
x=x\16
If r>9 Then
a=Chr(r+55)
Else
a=Str(r)
End If
s=a+s
   
Text2.Text=s
End Sub
【答案】(1)Caption
(2)4F
(3)r=x Mod 16;Loop
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值
【解析】【解答】(1)Caption屬性用于顯示控件中的文字,所以要使命令按鈕Command1顯示的文本改為“十進制轉換十六進制”,可在其屬性窗口中將Caption屬性的屬性值修改為“十進制轉換十六進制”。故答案為:Caption。
(2)79 Mod 16=15,79\16=4,15轉換成十六進制對應的是字符F,所以Text2中輸出的值是4F。故答案為:4F。
(3)1處語句是從低位到高位依次計算十六進制數每一位的值,所以r=x Mod 16;
2處語句是將Do While循環結構補充完整,所以該處語句為Loop。
故答案為:r=x Mod 16;Loop。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
22.小林為了將十進制數轉化為k進制數(k介于2~16之間)設計如下界面程序:在文本框Text1中輸入一個十進制數,在文本框Text2中輸入整數k(范圍在2到16之間),單擊“運行”按鈕Command1,程序將十進制轉化為k進制的,并在標簽Label1中輸出結果。請回答下列問題:
(1)在設計程序界面時,要更改窗體標題處顯示的內容,應修改窗體的   屬性。
(2)實現上述功能的 VB 程序如下。請在劃線處填入合適代碼。
Private
Sub Command1_Click()
Dim d As Integer,
k As Integer, r As Integer, s As String,
c As String
d = Val(Text1.Text) : k = Val(Text2.Text)
s = ""
Do While d>0
r=d Mod k
If
r>=10 Then
c=Mid("ABCDEF",r-9,1)
Else
c=Str(r)
End
If
s=c+s
   
Loop
   ="結果為"+s
End Sub
(3)運行該程序,在文本框 Text1 中輸入“38”,文本框 Text2 中輸入“2”,單擊“運行”按鈕,則 Label1 顯示的內容為是   。
【答案】(1)Caption
(2)d=d\k;Label1.Caption
(3)結果為100110
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;常量、變量及變量的賦值
【解析】【解答】(1)Caption屬性用于顯示控件中的文字,所以要更改窗體標題處顯示的內容,應修改窗體的Caption屬性。故答案為:Caption。
(2)1處語句是控制Do While循環,每轉換一位進制數,d=d\k,繼續下一位進制數的轉換,直至d≤0;
2處語句是將結果顯示在Label1標簽中,即Label1.Caption=“結果為”+s。
故答案為:d=d\k;Label1.Caption。
(3)在文本框 Text1 中輸入“38”,文本框 Text2 中輸入“2”,程序執行過程如下:
38 Mod 2=0,38\2=19;
19 Mod 2=1,19\2=9;
9 Mod 2=1,9\2=4;
4 Mod 2=0,4\2=2;
2 Mod 2=0,2\2=1;
1 Mod 2=1,1\2=0;
所以最終Label1中顯示的內容為“結果為100110”。故答案為:結果為100110。
【分析】本題考查算法與程序設計的綜合應用能力,分析問題解決問題的能力和根據題意填寫程序代碼的應用能力。
23.奇偶校驗是一種校驗數據傳輸正確性的方法。其中奇校驗方法:統計二進制數據的數位中“1”的個數,若個數為奇數,則校驗位值為0,否則校驗位值為1。小李編寫了一個計算奇校驗位值得VB程序,功能如下:在文本框Text1中輸入1~255十進制待校驗數,單擊“計算”按鈕Command1后,在文本框Text2中顯示該數對應的二進制值,并在標簽Label3中顯示該數的校驗位值。程序運行界面如圖所示。
(1)在設計程序界面時,要清空文本框中的顯示內容,應修改該文本框中的   屬性。
(2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。
Private Sub Command1_Click()
Dim a As Integer, s As String
Dim n As Integer, t As Integer, v As Integer
n=Val(Text1.Text)
t=0
s=""
Do While n>0
a=n Mod 2
n=n\2
t=   
s=Str(a)+s
Loop
v=t Mod 2
Text2.Text=s
Label3.Caption="校驗位值:"+    
End Sub
(3)運行該程序,在文本框Text1中輸入22,單擊“計算”按鈕,則顯示的校驗位值是   。
【答案】(1)Text
(2)t+a;str(1-v) 或Str(Abs(v-1))
(3)0
【知識點】過程與自定義函數;進制及數制轉換
【解析】【解答】(1) 在設計程序界面時,要清空文本框中的顯示內容,應設置文本框的文本屬性為空,故本小題答案填寫:Text。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim a As Integer, s As String
Dim n As Integer, t As Integer, v As Integer
n=Val(Text1.Text) ‘將從文本框1中輸入的字符轉為數值型并賦給變量n
t=0 ‘將變量t的值設為0
s="" ‘初始化字符串變量s
Do While n>0 ‘在n大于0時進行循環
a=n Mod 2 ‘將n除以2的余數賦給變量a
n=n\2 ‘將n除以2的整數商賦給變量n
t= 1 ‘將得到的余數a累加到變量t中,故本處答案填寫:t+a
s=Str(a)+s ‘將本次得到的余數轉為字符型并合并到字符串s的左側,即后面得到的余數在字符串的左側,前面的字符在右側
Loop
v=t Mod 2 ‘將t除以2的余數賦給變量v
Text2.Text=s ‘在文本框2中輸出十進制數n對應的二進制數
Label3.Caption="校驗位值:"+ 2 ‘使用標簽3輸出奇偶校驗碼,由于由以上得到的v值是:有偶數個1時,v值為0,有奇數個1時,v值為0,故需要調整奇偶對應的0、1符號,故本題答案填寫: str(1-v) 或Str(Abs(v-1)) 。
End Sub
由以上程序分析知,1處為:將得到的余數a累加到變量t中,故本處答案填寫:t+a。
2處為:使用標簽3輸出奇偶校驗碼,由于由以上得到的v值是:有偶數個1時,v值為0,有奇數個1時,v值為1,故需要調整奇偶對應的0、1符號,故本題答案填寫: str(1-v) 或Str(Abs(v-1)) 。
(3)22轉為二進制數為:10110,共有3個1,則奇偶校驗位為0,故答案填寫:0。
【分析】本題是將十進制數轉為二進制數,并求其奇偶校驗碼的程序填空題。在將十進制轉為二進制數時采用除2取余法,即將十進制數n除以2其余數就是該位的二進制數碼,除以2的整數商做為下一次的被除數并賦給變量n,以此類推直到n的值為0為止。在計算各個二進制數碼時將其累加到一個變量中,最后由這個變量的奇偶性來判斷二進制數碼的奇偶校驗碼。
24.英文打字練習:為了幫助初學者練習指法,小方利用所學的VB知識編寫了一個程序。單擊“生成原文”按鈕Command1后,程序自動在文本框Text1中隨機生成若干大小寫混編的英文字符串,練習者在文本框Text2中進行輸入練習。單擊“結果檢查”按鈕Command2后,在文本框Text3中輸出指法練習中正確的字符數,另外還輸出錯誤的字符所處的位置。運行效果如圖所示,VB代碼如下(注:“A”的ASCII碼值為65,“a”的ASCII碼值為97)。
(1)為實現上述功能,請在劃線處填入合適代碼。
Const n=8
Private Sub Command1_Click() ′隨機產生n個大小寫英文字符
Dim i As Integer, mode As Integer, s As String
Randomize
s=””
Text2.Text=””:Text3.Text=””
For i=1 To n
mode=Int(Rnd*2) ′mode=1時生成大寫字母,mode=0時生成小寫字母
If mode=1 Then
s=s+Chr(Int(Rnd*26)+65)
Else
   
End If
Next i
Text1.Text=s
End Sub
Private Sub Command2_Click()′結果檢查
Dim i As Integer, count As Integer, pos As String
count=0
pos=”” ′pos表示錯誤字符的位置
For i=1 To n
If     Then
count=count+1
Else
   
End If
Next i
Text3.Text=”正確字符有:”+Str(count)+”個!” +”錯誤位置:”+pos
End Sub
(2)根據代碼判斷,當n=8時,在文本框Text2中額外輸入第9個字符后,單擊“結果檢查”按鈕,輸出結果中錯誤位置的值會不會增加?   (選填:會/不會)。
【答案】(1)s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”));Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1);pos=pos+Str(i)
(2)不會
【知識點】運算符、基本運算與表達式;常量、變量及變量的賦值
【解析】【解答】(1)本題程序分析如下:
Const n=8 ‘定義符號常量n,并賦值為8
Private Sub Command1_Click()
Dim i As Integer, mode As Integer, s As String
Randomize
s=”” ‘初始化字符串s的值為空串
Text2.Text=””:Text3.Text=”” ‘將文本框2和文本框3清空
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1
mode=Int(Rnd*2) ′產生一個【0,1】范圍內的隨機整數并賦給變量mode,mode=1時生成大寫字母,mode=0時生成小寫字母
If mode=1 Then ‘如果mode的值為1則進行如下處理
s=s+Chr(Int(Rnd*26)+65) ‘產生一個隨機大寫字母并合并到變量s中
Else ‘否則進行如下處理
1 ‘產生一個隨機小寫字母并合并到變量s中,故此處答案應填寫: s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”))
End If
Next i
Text1.Text=s ‘在文本框1中輸出這個隨機字符串
End Sub
Private Sub Command2_Click() ′命令按鈕2單擊事件過程開始,訪過程用于結果檢查
Dim i As Integer, count As Integer, pos As String
count=0 ‘將變量count初始化為0,count用于統計正確字符個數
pos=”” ′初始化變量pos為一個空串,pos表示錯誤字符的位置
For i=1 To n ‘使用i來控制循環,i的初值為1,終值為n,步長為1,i用于指示文本框1和文本框2中字符串的位置
If 2 Then ‘如果從文本框1中的字符串中按i值和在文本框2中按i值取出一個字符相同時進行如下處理,故此處答案填寫: Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1)
count=count+1 ‘將count值增1,即正確字符多了1個
Else ‘否則,即取出來的兩個字符不相等時進行如下處理
3 ‘將i值轉為字符型并合并到字符串pos中,故此處答案填寫: pos=pos+Str(i)
End If
Next i
Text3.Text=”正確字符有:”+Str(count)+”個!” +”錯誤位置:”+pos ‘使用標簽3將檢驗結果輸出
End Sub
由以上程序分析知,1處為:產生一個隨機小寫字母并合并到變量s中,故此處答案應填寫: s=s+Chr(Int(Rnd*26)+97)或s=s+Chr(Int(Rnd*26)+Asc(“a”)) 。
2處為:如果從文本框1中的字符串中按i值和在文本框2中按i值取出一個字符相同時進行如下處理,故此處答案填寫: Mid(Text2.Text,i,1)=Mid(Text1.Text,i,1)。3處為:將i值轉為字符型并合并到字符串pos中,故此處答案填寫: pos=pos+Str(i) 。
(2)
【分析】本題為一道產生一個隨機字符串,并檢驗從文本框2中輸出的字符串正確個數及錯誤位置的程序填空題。在本題考查的重點是產生隨機字母的方法,產生隨機字母前先產生其ASCII碼,然后根據其ACSII碼值重新生成字符,另外隨機產生大小寫字母也由隨機數來控制。產生指定范圍內的隨機數公式為:int((上限-下限+1)*rnd)+下限。
25.在一次晚會上,一位魔術師掏出一疊撲克牌,取出其中13張黑桃,預先洗好牌,把牌面朝下,對觀眾說:“我不看牌,只數一數就能知道每張牌是什么?”魔術師口中念1,將第一張牌翻過來看正好是A;魔術師將黑桃A放到桌子上,繼續數手里的余牌,第二次數1,2將第一張牌放到這疊牌的下面,將第二張牌翻開,正好是黑桃2,也把它放在桌子上。第三次數1,2,3,前面兩張牌放到這疊牌的下面,取出第三張牌,正好是黑桃3,這樣依次將13張牌翻出,準確無誤。現在的問題是,魔術師手里牌的原始順序是怎么樣的呢?運行結果如下圖所示。
代碼如下:
Private Sub Command1_Click()
Dim a(1 To 13) As Integer, i As Integer, j As Integer, n As Integer
For i=1 To 13
a(i)=0
Next i
i=1:n=0:j=1
Do While i<=13
Do While True
If j>13 Then    
If a(j)=0 Then n=n+1
If n=i Then
   
n=0
Exit Do
End If
j=j+1
Loop
   
Loop
Label1.Caption="原來牌的順序是:"
For k=1 To 13
Label2.Caption =   
End Sub
【答案】j=1;a(j)=i或a(j)=n;i=i+1;Label2.Caption+Str(a(k))
【知識點】算法的控制結構;過程與自定義函數
【解析】【解答】本題程序分析如下:
Private Sub Command1_Click()
Dim a(1 To 13) As Integer, i As Integer, j As Integer, n As Integer
For i=1 To 13 ‘使用i來控制循環,i的初值為1,終值為13,步長為1,本循環用于初始化數組a
a(i)=0 ‘將數組a的第i個元素值設為0
Next i
i=1:n=0:j=1 ‘初始化變量i、n和j的值
Do While i<=13 ‘如果i值小于等于13時進行循環
Do While True ‘永真循環
If j>13 Then 1 ‘如果j值大于13時則將j值重新初始化為1,故本處答案填寫:j=1
If a(j)=0 Then n=n+1 ‘如果數組元素a(j)的值為0則將n值增1
If n=i Then ‘如果n值和i值相同時則進行如下處理
2 ‘將i值(n值也可)賦給數組元素,故本處答案填寫: a(j)=i或a(j)=n
n=0 ‘將n值初始化為0
Exit Do ‘跳出內層循環
End If ‘結束條件判斷
j=j+1 ‘將j值增1
Loop ‘結束內層循環
3 ‘將i值增1,故本處答案填寫:i=i+1
Loop ‘結束內層循環
Label1.Caption="原來牌的順序是:" ‘使用標簽1輸出“原來牌的順序”
For k=1 To 13 ‘使用k來控制循環
Label2.Caption = 4 ‘將數組a的每個元素使用標簽2輸出,故本處答案填寫: Label2.Caption+Str(a(k))
End Sub
由以上程序分析知,1處為:如果j值大于13時則將j值重新初始化為1,故本處答案填寫:j=1。
2處為:將i值(n值也可)賦給數組元素,故本處答案填寫: a(j)=i或a(j)=n 。
3處為:將i值增1,故本處答案填寫:i=i+1。
4處為:將數組a的每個元素使用標簽2輸出,故本處答案填寫: Label2.Caption+Str(a(k))
【分析】本題為一道計算牌的原來順序的程序題。本題由兩層循環組成,外層循環用于表示牌的個數,內層循環是進行牌的排序,原理就是按出牌順序計算其前面的牌的個數有多少,然后在數組中一個一個數進行填寫,計數時如果超過13,則從1號開始接著數,直到每一張牌排好序為止。
26.小明編寫了一個簡單算式計算器程序,功能如下:在文本框Text1中輸入一個加法的算式,形式為:a+b,a和b都為正整數。單擊按鈕Command1后,在標簽Labe1上顯示算式的計算的結果。程序運行界面如下圖所示:
(1)在設計程序界面時,應使用圖b所示“控件工具箱”中的   (填數字編號)添加標簽框對象。
(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。
Private
Sub Command1_Click()
Dim key As String
Dim a As Integer, b As Integer, ans As
Integer, ch As String
key=Text1.Text
i=1
Do While i<=Len(key)
ch=Mid(key,i,1)
If ch>="0" And ch<="9" Then
   
Else
Exit Do ′退出循環
End If
Loop
   
b=Val(Mid(key,i+1,Len(key)-i))
ans=a+b
Label1.Caption="算式計算結果為:"+Str(ans)
End
Sub
(3)運行時,在文本框中輸入“123+10”,單擊“計算”按鈕后,對語句ch=Mid(key,i,1)執行次數是   (單選,填字母:A .執行3次/B .執行4次/C .執行5次/C .執行6次)
【答案】(1)1
(2)i=i+1;a=Val(Mid(key,1,i-1))
(3)B
【知識點】查找算法及程序實現
【解析】【解答】(1)添加標簽對象使用標簽控制,1為標符控件,2為文本框控件,3為命令按鈕控件。故本題答案填寫:1。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim key As String
Dim a As Integer, b As Integer, ans As Integer, ch As String
key=Text1.Text ‘將從文本框1中輸入的字符串賦給變量key
i=1 ‘將控制變量i賦初值1
Do While i<=Len(key) ‘使用i來控制循環,i的終值為字符串key的長度
ch=Mid(key,i,1) ‘從字符串key中按i值中取一個字符并賦給變量ch
If ch>="0" And ch<="9" Then ‘如果ch為字符型數字則進行如下處理
1 ‘將i值增1,故本處答案填寫:i=i+1
Else ‘否則(ch不是字符型數字)進行如下處理
Exit Do ′退出循環
End If ‘結束條件判斷
Loop ‘結束循環
2 ‘按i值從字符串key的第一個字符取i-1個字符(第i個字符為“+”號),并轉為數值型賦給變量a,故本處答案填寫: a=Val(Mid(key,1,i-1))
b=Val(Mid(key,i+1,Len(key)-i)) ‘將“+”號后面的字符從字符串key中取出來轉為數值型并賦給變量b
ans=a+b ‘將a和b之和賦給變量ans
Label1.Caption="算式計算結果為:"+Str(ans) ‘使用標簽1輸出a和b之和
End Sub
由以上程序分析知,1處為:將i值增1,故本處答案填寫:i=i+1。
2處為:按i值從字符串key的第一個字符取i-1個字符(第i個字符為“+”號),并轉為數值型賦給變量a,故本處答案填寫: a=Val(Mid(key,1,i-1)) 。
(3) 在文本框中輸入“123+10” ,“+”號的位置為第4個,只有在字符串中中取4次才能檢查到“+”號,故答案選B。
【分析】本題是一道從文本框1中輸入加法并將結果顯示出來的程序題。本題的思路是查找“+”號的位置然后將字符串分成兩部分,并將其取出來轉為數值型并求其和。查找“+”號的方法是從字符串key中逐位查找,如果為數字則將i值增1,如果不是數字則退出循環,i值就是“+”號的位置。
27.小李用VB編寫了一個VB程序,在文本框Text1中輸入任意字串s,單擊命令按鈕Command1,統計s中以各連續數字字串為一因子的數字之和。如輸入字符串
“ast23bcde567fg8”,則輸出598,即23+567+8,并在Text2中輸出結果。程序界面如圖所示。代碼如下:
(1)若要將文本框的默認值設為空,則應設置文本框的   屬性為空。
(2)為實現上述功能的VB程序,請在劃線處填寫合適的代碼。
Private
Sub Command1_Click()
Dim s As String, a As String, b As String
Dim p As Integer, sum As Integer
s=Text1.Text + "e" ′加一個結尾非數字字符
i=1
p=0
sum=0
Do While ia=Mid(s,i,1)
b=Mid(s,i+1,1)
If (a>="0" And a<="9") And
(b>="0"
And b<="9") Then
p=p*10+Val(a)
   
p=p*10+Val(a)
sum=sum+p
   
i=i+1
End If
i=i+1
Loop
Text2.Text=Str(sum)
End
Sub
(3)若輸入字符串是“a2b056789bc8”,則程序運行后顯示的結果是:   。
【答案】(1)Text
(2)ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then;p=0
(3)溢出
【知識點】類、對象、屬性、方法、事件和事件處理的概念及應用;查找算法及程序實現
【解析】【解答】(1) 若要將文本框的默認值設為空,則應設置文本框的文本屬性為空串,故本小題答案填寫:Text。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim s As String, a As String, b As String
Dim p As Integer, sum As Integer
s=Text1.Text + "e" ′將文本框1中輸入的字符串加一個結尾非數字字符 ”e“后賦給變量s
i=1 ‘給循環控制變量i賦初值1
p=0 ‘初始化變量p,p用于存放字符型數字轉為數值后的值
sum=0 ‘初始化累加器變量sum
Do While ia=Mid(s,i,1) ‘按i值從字符串s中取出一個字符并賦給變量a
b=Mid(s,i+1,1) ‘按i值(i值后面一位)從字符串s中取出一個字符并賦給變量b
If (a>="0" And a<="9") And (b>="0" And b<="9") Then ‘如果a和b都是字符型數字則進行如下處理
p=p*10+Val(a) ‘將原p值擴大10倍后加上變量a轉為數值型的值,即將數字a做為個數加到變量這的右邊
1 ‘否則如果a為字符型數字,b為非字符型數字時,進行如下處理,故本處答案填寫: ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then
p=p*10+Val(a) ‘將原p值擴大10倍后加上變量a轉為數值型的值,即將數字a做為個數加到變量這的右邊
sum=sum+p ‘將p值累加到變量sum中
2 ‘將p初始化為0,以便存儲下一個字符型數字,故本處答案填寫:p=0
i=i+1 ‘將i值增1,此處相當于按循環控制變量i的步長值改變變量
End If ‘結束條件判斷
i=i+1 ‘將i值增1,此處相當于按循環控制變量i的步長值改變變量
Loop ‘結束循環
Text2.Text=Str(sum) ‘在文本框2中輸出各字符型數字轉為數值后之和
End Sub
由以上程序分析知,1處為:否則如果a為字符型數字,b為非字符型數字時,進行如下處理,故本處答案填寫: ElseIf (a>=“0” And a<=“9”) And (b>“9” Or b<“0”) Then 。
2處為:將p初始化為0,以便存儲下一個字符型數字,故本處答案填寫:p=0。
(3) 若輸入字符串是“a2b056789bc8” ,則sum=2+56789+8=56799,而sum定義為了整型變量,整型變量的取值范圍為-32768-32767,則程序報”溢出“錯誤,故答案填寫: 溢出 。
【分析】本題為一道從字符串中查找出字符型數字,并按其由非數字型字符分隔的值計算其和的程序題。本題的思想是從字符串中按順序取出兩個字符,如果兩個字符都是數字,則將左邊的數字轉為數值型并做為個位放到變量p中,如果兩個字符為一個數字,一個字母則將前一個放到變量p的個位并將p值累加到變量sum中,同時將p初始化為0,然后以此類推進行查找直到將整個字符串查找完為止。最后將sum值輸出。
28.RGB顏色模式是用8位二進制數表示紅色、8位二進制數表示綠色、8位二進制數表示藍色即使用24位二進制數表示一種顏色的模式。若將每位二進制數取反,即(0改為1、1改為0)就會變為另一種顏色,我們稱這種方式為顏色反相。小明編寫了一個VB程序實現上述功能,在名稱為o_c_txt的文本框中輸入原始顏色如#000000,點擊命令按鈕fx_cmd后,在名稱為f_c_lab的標簽中輸出反相后的顏色如#FFFFFF。運行效果如圖所示。實現上述功能的算法如下:
數組dzb_h的16個元素分別存放16進制數的16個基本數碼。
依次取出原始顏色代碼中每一位對應的16進制數碼,例如原始顏色代碼為#123456,第1次取出1,第2次取出2……
在數組dzb_h各元素中找到對應16進制數碼的元素
運用規律:0+F=1+E…=7+8取得反相色并累加,例如:數組dzb_h第1個元素值的反相色的值是數組dzb_h第16個元素值。
輸出得到的反相色。
實現上述功能的VB程序代碼段如下,請完善相關程序代碼。
Private Sub fx_cmd_Click()
Dim dzb_h(1 To 16) As String
Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String
dzb_h(1)="0":dzb_h(2)="1":dzb_h(3)="2":dzb_h(4)="3":dzb_h(5)="4":dzb_h(6)="5":dzb_h(7)="6"
dzb_h(8)="7":dzb_h(9)="8":dzb_h(10)="9":dzb_h(11)="A":dzb_h(12)="B":dzb_h(13)="C"
dzb_h(14)="D":dzb_h(15)="E":dzb_h(16)="F"
o_c=o_c_txt.Text
   
f_c="#"
Do While i<=Len(o_c)
c=Mid(o_c,i,1)
If Asc(c)>96 Then    
xbxh=1
Do While xbxh<17
If     Then
f_c=   
Exit Do
End If
xbxh=xbxh+1
Loop
i=i+1
Loop
f_c_lab.Caption=f_c
End Sub
【答案】i=2;c=Chr(Asc(c)-32);dzb_h(xbxh)=c;f_c+dzb_h(17-xbxh)
【知識點】算法的控制結構
【解析】【解答】本題程序分析如下:
Private Sub fx_cmd_Click()
Dim dzb_h(1 To 16) As String
Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String
dzb_h(1)="0":dzb_h(2)="1":dzb_h(3)="2":dzb_h(4)="3":dzb_h(5)="4":dzb_h(6)="5":dzb_h(7)="6"
dzb_h(8)="7":dzb_h(9)="8":dzb_h(10)="9":dzb_h(11)="A":dzb_h(12)="B":dzb_h(13)="C"
dzb_h(14)="D":dzb_h(15)="E":dzb_h(16)="F" ‘給數組dzb_h的每一個元素進行賦值,dzb_h中存放的為十六進制數的數碼
o_c=o_c_txt.Text ‘將從文本框o_c_txt中輸入的字符串賦給變量o_c
1 ‘使用i控制循環,字符串o_c的第一個字符為#號,不用轉換為十六進制,i的初值為2,故此處答案填寫: i=2
f_c="#" ‘初始化轉換后的十六進制代碼為“#”號
Do While i<=Len(o_c) ‘使用i來控制循環,在i小于等于字符串o_c的長度時進行循環
c=Mid(o_c,i,1) ‘按i值從字符串o_c中中取一個字符,并賦給變量c
If Asc(c)>96 Then 2 ‘如果c的ASCII值大于96(其為小寫字符)進行如下處理,將其變為大寫字母,故此處答案填寫: c=Chr(Asc(c)-32)
xbxh=1 ‘給循環變量xbxh設置初值1
Do While xbxh<17 ‘如果xbxh值小于17時進行循環
If 3 Then ‘如果數組的某個元素值與字符c值相等時則進行如下處理,故此處答案填寫: dzb_h(xbxh)=c
f_c= 4 ‘求出c的反碼并合并到變量f_c中,故此處答案填寫: f_c+dzb_h(17-xbxh)
Exit Do
End If
xbxh=xbxh+1 ‘將循環變量值增1
Loop
i=i+1 ‘將i值增1
Loop
f_c_lab.Caption=f_c ‘使用標簽f_c_lab輸出變量f_c的值
End Sub
由以上程序分析知,1處為:使用i控制循環,字符串o_c的第一個字符為#號,不用轉換為十六進制,i的初值為2,故此處答案填寫: i=2。
2處為:如果c的ASCII值大于96(其為小寫字符)進行如下處理,將其變為大寫字母,故此處答案填寫: c=Chr(Asc(c)-32)。
3處為:如果數組的某個元素值與字符c值相等時則進行如下處理,故此處答案填寫: dzb_h(xbxh)=c。
4處為:求出c的反碼并合并到變量f_c中,故此處答案填寫: f_c+dzb_h(17-xbxh)。
【分析】本題為一道求十六進制反碼的程序填空題。本題的思路中將十六進制數碼存入一個16個元素的數組中,然后將從文本框中輸入數據逐位核對數組元素的值,如果相同,則將17減去該元素的下標得到的下標值即為其反碼值,然后將其反碼合并到變量f_c,最后f_c即是文本框1中的反碼值。
29.在計算機中負數反碼的計算如下:給出十進制數x(-127≤x≤0),將x的絕對值轉化為七位二進制數,然后逐位取反,最左邊增加符號位1得到八位二進制數反碼。例如十進制數-7,將7轉換為七位二進制數為0000111,逐位取反變成1111000,最左邊增加符號位1得到八位二進制數反碼為11111000。小杜編寫了一個反碼轉化程序,功能如下:在文本框Text1中輸入十進制負數x(-127≤x≤0),單擊按鈕Command1后,在標簽Labe1上顯示其反碼。程序運行界面如下圖所示。
(1)在設計程序界面時,使應使用圖b所示“控件工具箱”中的   (填寫相應編號)添加文本框對象。
(2)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。
Private Sub Command1_Click()
Dim n As Integer, t As
Integer
Dim r As Integer, c As
Integer
Dim s As String
n=Val(Text1.Text)
   
s=””
Do While t>0
r=(t+1) Mod 2
   
t=t\2
c=c+1
Loop
For i=1 To 8-c
s=CStr(1)+s
Next i
Label1.Caption=” 十進制數”+CStr(n)+”的二進制反碼為”+s
End Sub
(3)程序運行時,在文本框中輸入“-27”,單擊“轉反碼”按鈕后,標簽Label1上顯示的內容是為:十進制數-27的二進制反碼為   。
【答案】(1)2
(2)t=Abs(n);s=Str(r)+s
(3)11100100
【知識點】運算符、基本運算與表達式
【解析】【解答】(1)由圖b可知,1為標簽控件,2為文本框控件,3為命令按鈕控件,4為列表框控件。故答案填:2。
(2)本題程序分析如下:
Private Sub Command1_Click()
Dim n As Integer, t As Integer
Dim r As Integer, c As Integer
Dim s As String
n=Val(Text1.Text)
1 ‘將變量n的絕對值賦給變量t,故此處答案填寫: t=Abs(n)
s=”” ‘初始化字符串變量s的值為空
Do While t>0 ‘在t不等于0時進行循環
r=(t+1) Mod 2 ‘將t值加1后再除以2要其余數,結果是求t的反碼
2 ‘將r值轉為字符型后放到字符串s的左側,故此處答案填寫: s=Str(r)+s
t=t\2 ‘將t值除以2后的整數商重新賦給變量t
c=c+1 ‘將c值增1,c為計數器,統計t轉為二進制數后的位數
Loop ‘結束循環
For i=1 To 8-c ‘使用i來控制循環,i的初值為1,終值為8-c,該循環用于給不足8位的二進制數前補符號“1”
s=CStr(1)+s ‘將1轉為字符型后放置到變量s的左邊
Next i
Label1.Caption=” 十進制數”+CStr(n)+”的二進制反碼為”+s
End Sub
由以上分析知,1處為:將變量n的絕對值賦給變量t,故此處答案填寫: t=Abs(n) 。
2處為:將r值轉為字符型后放到字符串s的左側,故此處答案填寫: s=Str(r)+s 。
(3)-27的絕對值為27,27的二進制碼為: 11011,其反碼為00100,前補符號位為: 11100100 ,故本題答案填寫: 11100100 。
【分析】本題為一道求十進制數反碼的程序填寫題。其算法過程為,先將十進制數求其絕對值,然后將其絕對值求反碼,求反碼采用除二取余法,這與十進制數轉二進制數相同,不是的是每次求其對應的二進數時加上一個1,這樣求出來的二進制數不是原碼而是補碼,然后將其合并到變量s中,不足8位的前補負號符“1”。
30.當計算機程序中無法用普通數據類型表示位數較多的乘數和計算結果時,就需要采用高精度乘法。如:當兩個各有20位數字的整數相乘時,就無法用長整型(Long)數據類型來表示。高精度乘法運算就是運用數組,用程序模擬列豎式計算的過程。兩個正整數進行高精度乘法計算的一般算法如下:
⑴將第一個整數各位上的數字按照從低位到高位的順序依次存入數組a(1)、a(2)、…、a(La)中,將另一個整數各位上的數字按照從低位到高位的順序依次存入數組b(1)、b(2)、…、b(Lb)中。其中,La表示第一個整數的位數,Lb表示第二個整數的位數;
⑵按照從低位到高位的順序,將兩個整數各位數值進行逐位乘法計算(第一輪先讓b(1)依次乘以a(1)、a(2)、…、a(La),第二輪再讓b(2)依次乘以a(1)、a(2)、…、a(La),依次進行),每位的乘法結果也按照低位到高位的順序依次存入數組ans(1)、ans(2)、ans(3)…中;
⑶對數組ans中的計算結果進行從低位到高位的進位處理;
⑷統計數組ans中實際計算結果的有效數值位數,并將位數值存入變量length;
⑸按照高位到低位的順序輸出數組ans中的計算結果。
小強按照上述方法設計了一個兩數進行高精度乘法計算的VB程序,功能如下:在文本框Text1和Text2中依次輸入兩個整數,單擊“計算”按鈕Command1,程序進行高精度乘法計算,并在標簽Label4中輸出計算結果。下面信息顯示了進行高精度乘法計算的主要過程(假設輸入的兩個整數分別為“123”和“45”):
圖a
圖b
程序運行效果如圖所示。
圖c
實現上述功能的VB程序如下:
(1)請在劃線處填入合適代碼。
Dim a(1 To 30)As Integer, b(1 To 30) As Integer, ans (1 To 60) As
Integer
Dim La As Integer, Lb As Integer, length As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, temp As String
'將兩個乘數(正整數)各數位上的數字按照上述算法依次存入數組a和b,每個正整數位數分別保存到變量La和Lb;將保存結果的數組ans(i)值初始化為零(該部分程序代碼略)
For i=1 To Lb
For j=1 To La
ans(i+j-1) =    
Next j
Next i
For i=1 To La+Lb
ans(i+1)=ans(i+1)+ans(i)\10
ans(i)=   
Next i
length=La+Lb
Do While ans(length)=0
length=length-1
Loop
For i=    To 1 Step -1
Label4.Caption=Label4.Caption&Str(ans(i))
Next i
End Sub
(2)根據本題算法,若輸入的兩個整數分別為5125和18,則在輸出乘法計算結果時,變量length的值為   。
【答案】(1)ans(i+j-1)+b(i)*a(j);ans(i) Mod 10;length
(2)5
【知識點】常見數據類型、數組
【解析】【解答】(1)本題程序分析如下:
Dim a(1 To 30)As Integer, b(1 To 30) As Integer, ans (1 To 60) As Integer
Dim La As Integer, Lb As Integer, length As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer, temp As String
'將兩個乘數(正整數)各數位上的數字按照上述算法依次存入數組a和b,每個正整數位數分別保存到變量La和Lb;將保存結果的數組ans(i)值初始化為零(該部分程序代碼略)
For i=1 To Lb
For j=1 To La
ans(i+j-1) = 1 ‘將兩數的乘積放于數組ans中,故此處答案應填寫: ans(i+j-1)+b(i)*a(j)
Next j
Next i
For i=1 To La+Lb ‘使用i來控制循環,i的初值為1,終值為la和lb的和,步長為1,該循環用來處理進位問題
ans(i+1)=ans(i+1)+ans(i)\10 ‘將數組元素i除以10的整數商加到其后的元素中,以此表示進位
Mod 10
ans(i)= 2 ‘將本數組元素除以10后的余數重新賦給該元素,表示這個元素進位后本位上的數,故此處答案填寫: ans(i)
Next i
length=La+Lb ‘計算乘積的長度值并賦給變量length
Do While ans(length)=0 ‘如果數組元素的最后一個元素值為0時進行循環
length=length-1 ‘將積的長度減1
Loop ‘結束內層循環
For i= 3 To 1 Step -1 ‘使用i來控制循環,i的初值為ans的length元素值,終值為1(因為數組是由低位到高位排序的,輸出時由高位到低位輸出),步長值為1,故本處答案填寫: length 。
Label4.Caption=Label4.Caption&Str(ans(i))
Next i
End Sub
由以上程序分析知:1處為將兩數的乘積放于數組ans中,故此處答案應填寫: ans(i+j-1)+b(i)*a(j) 。
2處為:將本數組元素除以10后的余數重新賦給該元素,表示這個元素進位后本位上的數,故此處答案填寫: ans(i) Mod 10 。
3處為:使用i來控制循環,i的初值為ans的length元素值,終值為1(因為數組是由低位到高位排序的,輸出時由高位到低位輸出),步長值為1,故本處答案填寫: length 。
(3) 5125*18 =92250,故其length值為5,本題答案填寫:5。
【分析】在進行多位數乘法時先將其乘積放于數組ans中,然后逐位處理其進位問題,最后調整兩個數之積的長度值。兩數的 精確值存儲在數組ans中,最后由高位到低位輸出。
1 / 1

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 荔浦县| 旅游| 新宁县| 麻阳| 射洪县| 蒙自县| 宁河县| 万年县| 稻城县| 蕉岭县| 武夷山市| 朝阳市| 房产| 钦州市| 龙游县| 肇州县| 嘉义市| 东至县| 晴隆县| 额尔古纳市| 达州市| 柯坪县| 绥德县| 平塘县| 息烽县| 昌吉市| 临沧市| 正阳县| 沾化县| 肥西县| 安平县| 中宁县| 沙坪坝区| 广灵县| 邛崃市| 东乡| 广饶县| 沾化县| 开封市| 双牌县| 弥渡县|