程序調(diào)試(參考答案)概要_第1頁(yè)
程序調(diào)試(參考答案)概要_第2頁(yè)
程序調(diào)試(參考答案)概要_第3頁(yè)
程序調(diào)試(參考答案)概要_第4頁(yè)
程序調(diào)試(參考答案)概要_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

(二) 程序調(diào)試(參考答案)程序調(diào)試題的操作步驟是:(1)建立一標(biāo)準(zhǔn)EXE工程,將這一模塊程序添加到工程中。如果你是通過(guò)雙擊標(biāo)準(zhǔn)模塊程序Model1.BAS進(jìn)入Visual Basic系統(tǒng)的,則首先需要添加一個(gè)窗體模塊。(2)將該標(biāo)準(zhǔn)模塊程序Model1.BAS中代碼的指定的錯(cuò)誤修改正確或在指定的空位填上適當(dāng)?shù)恼Z(yǔ)句,并在窗體模塊中編寫代碼(常常寫在窗體的Click()事件中)調(diào)用標(biāo)準(zhǔn)模塊中的Sub過(guò)程或用戶自定義函數(shù)(如果在標(biāo)準(zhǔn)模塊程序Model1.BAS有多個(gè)過(guò)程或函數(shù),要注意調(diào)用的先后順序,否則得不到正確結(jié)果),調(diào)試運(yùn)行程序,使其能輸出正確結(jié)果。(3)按試題要求保存工程。如果你的計(jì)算機(jī)中沒(méi)有模塊程序Model1.BAS,你必需先自己新建一工程,再添加一個(gè)默認(rèn)標(biāo)準(zhǔn)模塊,將題目所附的參考程序輸入(可復(fù)制粘貼),將其中用-n-(n為1,2,3,4,5)部分刪除后改為合適的內(nèi)容或?qū)⒂? 錯(cuò)誤n * 標(biāo)示的下一語(yǔ)句中的錯(cuò)誤改正,然后調(diào)試運(yùn)行程序使其達(dá)到該題目的要求。1已有一模塊文件Modify.Bas。該模塊中的Summary過(guò)程是用于計(jì)算1!+2!+.+20!,并打印出計(jì)算結(jié)果,但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。Modify.Bas模塊中的nFactor函數(shù)過(guò)程用于計(jì)算n!。 程序如下:Public Function nFactor(ByVal n As Integer) As Double Dim i As Integer Dim temp As Double temp=1 For i = 1 To n temp = temp * i Next i nFactor = tempEnd FunctionPublic Sub summary() Dim sum As Double Dim i As Integer Dim n As Integer n = 20 For i = 1 To n sum = sum + nFactor(i) Next i Form1.Print sum= & sum End Sub2已有一模塊文件Modify.Bas。該模塊中的Calculate過(guò)程是產(chǎn)生100個(gè)0,99范圍內(nèi)的隨機(jī)整數(shù),統(tǒng)計(jì)個(gè)位上的數(shù)字分別為1,2,3,4,5,6,7,8,9,0的數(shù)的個(gè)數(shù)并打印出來(lái)。 程序如下:Public Sub calculate() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer 產(chǎn)生100個(gè)0,99范圍內(nèi)的隨機(jī)整數(shù) 每行10個(gè)打印出來(lái) For i = 1 To 100 * 錯(cuò)誤1 * a(i) =int( Rnd * 100) If a(i) 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i 統(tǒng)計(jì)個(gè)位上的數(shù)字分別為1,2,3,4,5,6,7,8,9,0的數(shù)的個(gè)數(shù) 并將統(tǒng)計(jì)結(jié)果保存在數(shù)組x(1),x(2),.,x(10)中,將統(tǒng)計(jì)結(jié)果打印出來(lái) For i = 1 To 100 * 錯(cuò)誤2 * p = Int(a(i) mod 10) 求個(gè)位上的數(shù)字 If p = 0 Then p = 10 * 錯(cuò)誤3 * x(p) = x(p) + 1 Next i Form1.Print 統(tǒng)計(jì)結(jié)果 For i = 1 To 10 p = i If i = 10 Then p = 0 * 錯(cuò)誤4 * Form1.Print 個(gè)位數(shù)為 + Str(p) + 共 + Str(x(i) + 個(gè) 個(gè)位數(shù)為0統(tǒng)計(jì)結(jié)果保存在x(10)中 Next iEnd Sub3.已有一模塊文件Modify.Bas。該模塊中的Findat過(guò)程是用于在一個(gè)字符串變量中查找at,并用消息框給出查找結(jié)果的報(bào)告:沒(méi)有找到或找到的個(gè)數(shù),但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。 程序如下:Public Sub Findat() 在字符串str1中查找at Dim str1 As String Dim length As Integer 字符串長(zhǎng)度 Dim sum As Integer 查到的個(gè)數(shù) Dim i As Integer str1 = InputBox(請(qǐng)輸入一個(gè)字符串) length = len(str1) i = 1 sum = 0 Do While i R Form1.Print 太大了,繼續(xù)猜! Case Else Form1.Print 太小了,繼續(xù)猜! End Select times = times + 1 * 錯(cuò)誤3 * Loop While times 5 Then Form1.Print 猜數(shù)失敗,游戲結(jié)束! * 錯(cuò)誤4 * Form1.Print 正確答案為 & Str(R) End IfEnd Sub5.已有一模塊文件Modify.Bas。該模塊中的ArmstrongNumber過(guò)程是用于求出1-999之間所有的Armstrong數(shù),并打印出來(lái),但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。所謂Armstrong數(shù)是指一個(gè)數(shù)等于它每位上數(shù)字的立方和。例如:371=33+73+13,那么371就是一個(gè)Armstrong數(shù)。 程序如下:Public Sub ArmstrongNumber() Dim armstrong As Integer Dim i As Integer Dim hundred As Integer 百位上的數(shù)字 Dim ten As Integer 十位上的數(shù)字 Dim one As Integer 個(gè)位上的數(shù)字 For i = 1 To 999 hundred = i 100 ten = (i - hundred * 100) 10 one = i mod 10 If i = hundred3 + ten3 +one3 Then Form1.Print i; is ar mstrong number End If Next iEnd Sub6.已有一模塊文件Modify.Bas。該模塊中的 CountTo60 過(guò)程是用于從一堆一分、二分、五分的硬幣中取出20枚,使其總值為60分,要求輸出取法的數(shù)量及每一種取法的一分、二分、五分的個(gè)數(shù)。 程序如下:Public Sub CountTo60() 從一堆一分、二分、五分的硬幣中取出20枚,使其總值為60分 輸出取法的數(shù)量及每一種取法的一分、二分、五分的個(gè)數(shù) Dim one As Integer 一分硬幣個(gè)數(shù) Dim two As Integer 二分硬幣個(gè)數(shù) Dim five As Integer 五分硬幣個(gè)數(shù) Const n = 20 總數(shù)20枚 Dim k As Integer 取法數(shù)量 k = 0 For one = 1 To n * 錯(cuò)誤1 * For two = 1 To n - one five = n - one - two * 錯(cuò)誤2 * If one + two*2 + five*5 = 60 Then k = k + 1 Form1.Print one=; one; two=; two; five=; five End If * 錯(cuò)誤3 * Next two * 錯(cuò)誤4 * Next one Form1.Print k=; kEnd Sub7.已有一模塊文件Modify.Bas。該模塊中的TJ過(guò)程是將一批數(shù)據(jù)中小于零的數(shù)及它們的積打印出來(lái),但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。Modify.Bas模塊中的SCSJ過(guò)程是產(chǎn)生數(shù)據(jù),數(shù)據(jù)的取值范圍為-10 10 之間的隨機(jī)數(shù)。 程序如下:Private Const n = 10Private a(1 To n) As IntegerTJ過(guò)程是將一批數(shù)據(jù)中小于零的數(shù)及它們的積打印出來(lái)數(shù)據(jù)由SCSJ過(guò)程產(chǎn)生,數(shù)據(jù)的取值范圍為-10 10 之間的隨機(jī)整數(shù)Public Sub TJ() Dim i As Integer Dim t As Single t=1 For i = 1 To 10 If a(i)0 Then t = t * a(i) End If Next i Form1.Print T=; tEnd SubPublic Sub SCSJ() Randomize Form1.Print 原始數(shù)據(jù) Dim i As Integer Dim j As Integer For i = 1 To n 隨機(jī)產(chǎn)生0或1,為0時(shí)取負(fù),為1時(shí)取正 j = Int(Rnd * 2) If j=0 Then j = -1 a(i) = j * Int(Rnd * (n + 1) Form1.Print a(i); Next i Form1.PrintEnd Sub8.已有一模塊文件Modify.Bas。該模塊中的Money過(guò)程是用于統(tǒng)計(jì)一個(gè)有7個(gè)工作人員的餐廳發(fā)工資所需的100元、50元、10元、5元和1元的票面數(shù),但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。 Modify.Bas模塊中的SalaryData過(guò)程是給出7個(gè)員工的工資。(工資單位是元) 程序如下:Dim salary(7) As IntegerPublic Sub Money() Dim hundred As Integer, totalhundred As Integer 100元票面數(shù)量、總數(shù)量 Dim fifty As Integer, totalfifty As Integer 50元票面數(shù)量、總數(shù)量 Dim ten As Integer, totalten As Integer 10元票面數(shù)量、總數(shù)量 Dim five As Integer, totalfive As Integer 5元票面數(shù)量、總數(shù)量 Dim one As Integer, totalone As Integer 1元票面數(shù)量、總數(shù)量 Dim totalsalary As Integer 工資總計(jì) Dim i As Integer, temp As Integer totalhundred = 0 totalfifty = 0 totalten = 0 totalfive = 0 totalone = 0 totalsalary = 0 For i = 1 To 7 temp = salary ( i ) hundred = Int(temp / 100) temp = temp hundred * 100 fifty = Int(temp / 50) temp = temp - fifty * 50 ten = Int(temp / 10) temp = temp - ten * 10 five = Int(temp / 5) temp = temp - five * 5 one = temp totalhundred = totalhundred + hundred totalfifty = totalfifty + fifty totalten = totalten + ten totalfive = totalfive + five totalone = totalone + one totalsalary = totalsalary + salary ( i ) Next i Form1.Print 共需100元 & Str(totalhundred) & 張 Form1.Print 共需50元 & Str(totalfifty) & 張 Form1.Print 共需10元 & Str(totalten) & 張 Form1.Print 共需5元 & Str(totalfive) & 張 Form1.Print 共需1元 & Str(totalone) & 張 Form1.Print 合計(jì) & Str(totalsalary) & 元End SubPublic Sub SalaryData() salary(1) = 1398 salary(2) = 1765 salary(3) = 689 salary(4) = 1500 salary(5) = 832 salary(6) = 590 salary(7) = 1200End Sub9.已有一模塊文件Modify.Bas。該模塊中的 MaxLine 過(guò)程用于查找一個(gè)5行4列的二維數(shù)組中行平均值最大的行,并將該行所有數(shù)據(jù)調(diào)整到第一行的位置。 Modify.Bas模塊中的DataProduce 過(guò)程用于產(chǎn)生原始數(shù)據(jù);Average 過(guò)程用于計(jì)算各行的平均值;PrintArray過(guò)程用于打印二維數(shù)組和行平均值。 程序如下:Dim a(1 To 5, 1 To 4) As IntegerDim ave(1 To 5) As IntegerPublic Sub MaxLine() Dim i As Integer Dim j As Integer Dim temp As Integer Dim Line_no As Integer 最大平均值的行號(hào) 找出最大平均值所在行 Line_no = 1 For i = 2 To 5 * 錯(cuò)誤1 *If ave(Line_no) ave(i) Then * 錯(cuò)誤2 * Line_no = i End If Next i 交換第一行與最大平均值所在行 For j = 1 To 4 temp = a(1, j) * 錯(cuò)誤3 * a(1, j)= a (Line_no, j) a (Line_no, j) = temp Next j 交換對(duì)應(yīng)行的平均值 temp = ave(1) ave(1) = ave(Line_no) ave(Line_no) = temp 打印交換后的數(shù)據(jù) Form1.Print 交換后的數(shù)據(jù)和平均值 PrintArrayEnd SubPublic Sub DataProduce() Dim i As Integer Dim j As Integer 產(chǎn)生5*4數(shù)組 For i = 1 To 5 For j = 1 To 4 a(i, j) = Int(100 * Rnd) Next j Next iEnd SubPublic Sub Average() Dim i As Integer Dim j As Integer Dim sum As Integer 計(jì)算各行平均值 For i = 1 To 5 sum = 0 For j = 1 To 4 * 錯(cuò)誤4 * sum = sum + a(i, j) Next j ave(i) = sum / 4 Next i 將數(shù)組和平均值打印出來(lái) Form1.Print 原始數(shù)據(jù)和平均值 PrintArrayEnd SubPublic Sub PrintArray() Dim i As Integer Dim j As Integer For i = 1 To 5 For j = 1 To 4 Form1.Print a(i, j); Spc(3); Next j Form1.Print 平均值=; ave(i) Next iEnd Sub10已有一模塊文件Modify.Bas。該模塊中的 Wrap 過(guò)程用于判斷一個(gè)字符串是否“回文”。所謂“回文”是指字符串順讀與倒讀都是一樣的,如“潮起潮落,落潮起潮”。 程序如下:Public Sub Wrap() Dim length As Integer Dim str1 As String Dim strleft As String Dim strright As String Dim k As Integer str1 = InputBox(請(qǐng)輸入任意的字符串) 輸入任意字符串, 如“潮起潮落,落潮起潮” *錯(cuò)誤1* length = len(str1) k = 1 Do *錯(cuò)誤2* strleft = mid(str1, k,1) 從左邊起逐個(gè)取出一個(gè)字符 *錯(cuò)誤3* strright =mid(str1, length +1 k ,1) 從右邊起逐個(gè)取出一個(gè)字符 *錯(cuò)誤4* If strleft strright Then Exit Do End If k = k + 1 Loop While k length / 2 Then Form1.Print str1 & 是回文 Else Form1.Print str1 & 不是回文 End IfEnd Sub11.已有一模塊文件Modify.Bas。該模塊中的BubbleSort過(guò)程是冒泡排序法;GenerateData過(guò)程產(chǎn)生10個(gè)1,20之間互不相同的隨機(jī)整數(shù);Swap過(guò)程交換兩個(gè)變量的數(shù)值。 程序如下:Private Const n = 10Private a(1 To n) As IntegerBubbleSort過(guò)程是冒泡排序Swap過(guò)程交換兩個(gè)變量數(shù)值GenerateData過(guò)程產(chǎn)生10個(gè)1,20之間互不相同的隨機(jī)整數(shù)Public Sub BubbleSort() Dim i As Integer, j As Integer i = 1 Do For j = i + 1 To n If a(j) a(i) Then * 1 * Swap a(j), a(i) 去掉括號(hào),或改為 call Swap (a(j), a(i) End If Next j i = i + 1 * 2 * Loop While i n Form1.Print 排序結(jié)果 For i = 1 To n Form1.Print a(i); Next iEnd SubPublic Sub GenerateData() Dim i As Integer Dim j As Integer Dim b As Boolean For i = 1 To n b = False Do While Not b a(i) = Int(20 * Rnd + 1) b = True * 3 * For j = 1 To i 1 If a(i) = a(j) Then b = False Exit For End If Next j Loop Form1.Print a(i) Next iEnd Sub* 4 *Public Sub Swap(a As Integer, b As Integer) 去掉ByVal,數(shù)組不能以ByVal 傳遞 Dim temp As Integer temp = a a = b b = tempEnd Sub12.已有一模塊文件Modify.Bas。該模塊中的 Transfer 過(guò)程用于將一個(gè)十六進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù);number 函數(shù)過(guò)程用于將一個(gè)十六進(jìn)制符號(hào)轉(zhuǎn)換為數(shù)值。 程序如下:Public Sub Transfer() Dim Hex As String 十六進(jìn)制數(shù) Dim Dec As Double 十進(jìn)制數(shù) Dim temp As String Dim i As Integer Dim n As Integer Hex = InputBox(輸入一個(gè)十六進(jìn)制整數(shù)) * 錯(cuò)誤1 * n = len(Hex) i = 0 Do * 錯(cuò)誤2 * temp = Mid(Hex, n - i , 1) * 錯(cuò)誤3 * Dec = Dec + number(temp) * 16 i i = i + 1 Loop While i a(j) Then Swap a(i),a(j) End If Next j Form1.Print a(i) Next i Form1.print a(i) 或 a(10) 即最后一個(gè)End SubPublic Sub Swap(a As Integer, b As Integer) Dim temp As Integer temp = a a = b b = tempEnd Sub14.已有一模塊文件Modify.Bas。該模塊中的PrintArray過(guò)程是用于打印一個(gè)5行5列的數(shù)字方陣,并使兩對(duì)角線上元素均為1,其余均為2。要求打印的數(shù)字方陣兩列數(shù)字之間空3格,兩行之間空一行。 程序如下:Public Sub PrintArray() 下面程序用于打印5行5列的數(shù)字方陣 使兩對(duì)角線上元素均為1,其余均為2 要求打印的數(shù)字方陣兩列數(shù)字之間空3格,兩行之間空一行 只要修改標(biāo)出出錯(cuò)位置的下面那一條語(yǔ)句 Dim a(5, 5) As Integer Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5 * 錯(cuò)誤1 * If i j and i 6 - j Then a(i, j) = 2 Else a(i, j) = 1 End If * 錯(cuò)誤2 * Form1.Print a(i, j) & Space(3); 數(shù)字與空字符串不能相加 Next j * 錯(cuò)誤3 * Form1.Print : Form1.Print Next iEnd Sub15.已有一模塊文件Modify.Bas。該模塊中的Combination過(guò)程是用于計(jì)算在m個(gè)數(shù)據(jù)中取出n個(gè)數(shù)據(jù)的排列組合值,計(jì)算公式為Cmn=m!/(n!*(m-n)!)。Modify.Bas模塊中的nFactor函數(shù)過(guò)程用于計(jì)算n!。 程序如下:Public Sub Combination() Dim m As Integer Dim n As Integer Dim Cmn As Long Do m = Val(InputBox(請(qǐng)輸入一個(gè)整數(shù)m) n = Val(InputBox(請(qǐng)輸入一個(gè)整數(shù)n(n=m) * 錯(cuò)誤1 * Loop While m =n * 錯(cuò)誤2 * Cmn = nFactor(m) /( nFactor(n) * nFactor(m - n) Form1.Print 排列組合數(shù)為; CmnEnd SubPublic Function nFactor(ByVal n As Integer) As Double Dim i As Integer Dim temp As Double temp = 1 For i = 1 To n temp = temp * i Next i *錯(cuò)誤 3 * nFactor = temp 去掉nFactor (n)中的(n)部分 * 錯(cuò)誤4 *End Sub16.已有一模塊文件Modify.Bas。該模塊中的FindMax過(guò)程是用于查找一批數(shù)據(jù)中的最大數(shù),并打印出最大數(shù)的值及最大數(shù)在數(shù)組中的下標(biāo)值,但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。Modify.Bas模塊中的GenerateData過(guò)程用于產(chǎn)生30個(gè)1-500之間的隨機(jī)整數(shù)并5個(gè)一行打印出來(lái)。 程序如下:Dim a(30) As IntegerPublic Sub FindMax() Dim Position As Integer 最大數(shù)在數(shù)組中的下標(biāo) Dim max As Integer 最大數(shù) Dim i As Integer GenerateData max = a(1) Position =1 For i = 2 To 30 If a(i) max Then max = a(i) Position = i End If Next i Form1.Print 最大值= & Str(max) Form1.Print 最大值的下標(biāo)= & Str(Position)End SubPublic Sub GenerateData() Dim i As Integer For i = 1 To 30 a(i) = Int(500 * Rnd() + 1) Form1.Print a(i), If i Mod 5 = 0 Then Form1.Print Next iEnd Sub17.已有一模塊文件Modify.Bas。該模塊中的 Prime 過(guò)程是求出100到200之間所有的素?cái)?shù),并打印出來(lái),但不完整,請(qǐng)?jiān)跈M線上填入必要的內(nèi)容,使其完整。程序如下:Public Sub prime() 打印出100到200之間所有的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù) Dim i As Integer Dim j As Integer Dim k As Integer Dim t As Integer 統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù) Dim b As Boolean For i = 100 To 200 b =

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論