答案VB期末考试实验

[Modify]1
'Module1.Bas模块中的Summary过程是用于计算1!+2!+...+10!,
'并打印出计算结果。nFactor函数过程用于计算n!。
[Key]
--1--temp = 1
--2--For i = 1 To n
--3--nFactor = temp
--4--sum = sum + nFactor(i)
[Modify]2
'求出1--999之间所有的Armstrong数,并打印出来。
'Modify.Bas模块中的ArmstrongNumber过程是用于求出1--999之间所有的Armstrong数。
'所谓Armstrong数是指一个数等于它每位上数字的立方和。
'例如:371=3^3+7^3+1^3,那么371就是一个Armstrong数。
[Key]
--1--hundred = i \ 100[OR]hundred = Int(i / 100)[OR]hundred = Fix(i / 100)
--2--ten = Int((i - hundred * 100) / 10)[OR]ten = (i - hundred * 100) \ 10 [OR]Fix((i - hundred * 100) / 10)
--3--one = i - hundred * 100 - ten * 10[OR]one = i Mod 10
--4--If i = hundred ^ 3 + ten ^ 3 + one ^ 3 Then
[Modify]3
'在30个随机整数中查找的最大数及下标值。
'Modify.Bas模块中的FindMax过程是用于查找一批数据中的最大数,
'并打印出最大数的值及最大数在数组中的下标值。
'GenerateData过程用于产生30个[1-500]之间的随机整数并5个一行打印出来。
[Key]
--1--max = a(1)
--2--Position = 1
--3--max = a(i)
--4--Position = i
[Modify]4
'在输入框输入的字符串中查找"at"。
'Modify.Bas模块中的Findat过程是用于在一个字符串变量中查找"at",
'并用消息框给出查找结果的报告:没有找到或找到的个数。
[Key]
--1--length = Len(str1)
--2--Do While i <= length - 1
--3--If Mid$(str1, i, 2) = "at" Then
--4--If sum = 0 Then
[Modify]5
'输入一个任意偶数,在窗体显示所有不重复的素数分解式。
'例如:16 = 3 + 13,16 = 5 + 11
'Modify.Bas模块中的even过程是找出一个大于4的偶数的所有不重复的素数分解式,
'Modify.Bas模块中的Isprime函数过程是判断一个数是否素数。
[Key]
--1--Do Until x Mod 2 = 0 And x > 4
--2--If Isprime(i) And Isprime(x - i) Then
--3--Isprime = True
--4--If x Mod i = 0 Then
[Modify]6
'计算排列组合值 Cmn 。
'Modify.Bas模块中的 Combination 过程是用于计算在m个数据中
'取出n个数据的排列组合值,计算公式为 Cmn = m!/(n!*(m-n)!)。
'Modify.Bas模块中的nFactor函数过程用于计算n!。
[Key]
--1--Loop While m < n[OR]Loop Until m >= n
--2--Cmn = nFactor(m) / nFactor(n) / nFactor(m - n)[OR]Cmn = nFactor(m) / (nFactor(n) * nFactor(m - n))
--3--nFactor = temp
--4--End Function
[Modify]7
'设计一个矩阵转置的程序。
'Modify.Bas模块中的Transpose过程用于产生一个转置矩阵。
'所谓转置是指将二维数组中所有行和对应列的元素进行交换。
[Key]
--1--For j = 1 To i[OR]For j = 1 To i - 1
--2--Swap a(i, j), a(j, i)[OR]Call Swap(a(i, j), a(j, i))
--3--Form1.Print a(i, j);
--4--Form1.Print
[Modify]8
'设计一个简单的猜数游戏程序。
'Modify.Bas模块中的 Guess 过程是猜数游戏,
'由计算机产生一个

[1,100]的任意整数,输入猜数后计算机给出提示,
'如果5次后还没有猜中就结束游戏并公布正确答案。
[Key]
--1--Int(Rnd * 100) + 1
--2--Case Is > R
--3--Loop Until times > 5[OR]Loop While times <= 5
--4--Form1.Print "正确答案为" & Str(R)
[Modify]9
'设计一个将十六进制整数转换为十进制整数的程序。
'Modify.Bas模块中的 Transfer 过程用于将一个十六进制整数转换为十进制整数;
'number 函数过程用于将一个十六进制符号转换为数值。
[Key]
--1--n = Len(Hex)
--2--temp == Mid(Hex, n - i, 1)
--3--Dec = Dec + number(temp) * 16 ^ i
--4--Form1.Print Hex & "转换为十进制数为" & str(Dec)
[Modify]10
'设计一个判断“回文”的程序。
'模块中的 Wrap 过程用于判断一个字符串是否“回文”。
'所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。
[Key]
--1--length = Len(str1)
--2--strleft = Mid(str1, k, 1)
--3--strright = Mid(str1, length - k + 1, 1)
--4--If strleft <> strright Then
[Modify]11
'模块中的Money过程是用于统计一个有7个工作人员的餐厅发工资
'所需的100元、50元、10元、5元和1元的票面数。
'模块中的SalaryData过程是给出7个员工的工资。(工资单位是元)
[Key]
--1--temp = salary(i)
--2--temp = temp - hundred * 100
--3--one = temp
--4--totalsalary = totalsalary + salary(i)
[Modify]12
'模块中的 MaxLine 过程用于查找一个5行4列的二维数组中
'行平均值最大的行,并将该行所有数据调整到第一行的位置。
'模块中的DataProduce 过程用于产生原始数据;
'Average过程用于计算各行的平均值;
'PrintArray过程用于打印二维数组和行平均值。
[Key]
--1--If ave(Line_no) < ave(i) Then
--2--Line_no = i
--3--a(1, j) = a(Line_no, j)
--4--sum = sum + a(i, j)
[Modify]13
'模块中的Calculate过程是产生100个[0,99]范围内的随机整数,
'统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。
[Key]
--1--a(i) = Int(Rnd * 100)
--2--p = a(i) - Int(a(i) / 10) * 10[OR]p = a(i) Mod 10
--3--x(p) = x(p) + 1
--4--Form1.Print "个位数为" + Str(p) + "共" + Str(x(i)) + "个"
[Modify]14
'模块中的BubbleSort过程是冒泡排序法;
'GenerateData过程产生10个[1,20]之间互不相同的随机整数;
'Swap过程交换两个变量的数值。
[Key]
--1--Call Swap(a(j), a(i))[OR]Swap a(j), a(i)
--2--Loop Until i = n
--3--For j = 1 To i - 1
--4--Public Sub Swap(ByRef a As Integer, ByRef b As Integer)[OR]Public Sub Swap(a As Integer, b As Integer)
[Modify]15
'模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来
'SCSJ过程是产生数据,数据的取值范围为-10 ~ 10 之间的随机整数数
[Key]
--1--t = 1
--2--If a(i) < 0 Then
--3--If j = 0 Then j = -1
[Modify]16
'Modify.Bas模块中的PrintArray过程是

输出一个右上三角元素(含对角线)为1,
'其余元素为0的5×5矩阵
[Key]
--1--If i <= j Then[OR]If j >= i Then
--2--a(i, j) = 1
--3--Form1.Print
[Modify]17
'Modify.Bas模块中的Prime过程是求出100到200之间所有的素数,并打印出来。
[Key]
--1--k = 2
--2--b = False
--3--k = k + 1
--4--if b then[OR]if b = True then
[Modify]18
'Modify.Bas模块中的 CountTo60 过程是用于从一堆一分、二分、五分的硬币中取出20枚,
'使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数。
[Key]
--1--For two = 1 To n[OR]For two = 1 To n - one
--2--If one + two * 2 + five * 5 = 60 Then
--3--Next[OR]Next two
--4--Next[OR]Next one
[Modify]19
'Modify.Bas模块中的Summary过程是
'用于计算并打印出s=1+2+2^2+2^3+……,直至s超过1E+16。
[Key]
--1--s = 1
--2--Do Until s > 1E+16[OR]Do While s <= 1E+16
--3--i = i + 1
[Modify]20
'Modify.Bas模块中的Sum过程是用于计算
'并打印出f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20)
[Key]
--1--sign = -1
--2--For i = 2 To 19
--3--sign = -sign
[Modify]21
'Modify.Bas模块中的cloze过程用于求出1-1000之间的所有完数,
'factor过程用于求出一个数的所有因子并将它们存入数组。
'所谓完数是指一个数的所有因子之和等于其自身,
'例如6=1*2*3=1+2+3,所以6是完数。
[Key]
--1--factor i, n
--2--If s = i Then
--3--For i = x - 1 To 2 Step -1
--4--a(k) = i
[Modify]22
'Modify.Bas模块中的same过程找出1--1000之间所有的同构数,
'所谓同构数是指一个数出现在它的平方数的右端,
'如25在25平方625的右端,则25为同构数。
[Key]
--1--x1 = Trim(Str(i))[OR]x1 =i
--2--x2 = Trim(Str(i ^ 2))[OR]x2 =i^2
--3--If x1 = Right(x2, Len(x1)) Then
[Modify]23
'Modify.Bas模块中的chook过程用于解决百鸡问题。
'所谓百鸡问题,设公鸡每只5元、母鸡每只3元、小鸡1元3只,如果用100元共买
'100只鸡,可以各买几只公鸡、母鸡和小鸡?
[Key]
--1--chicken = 100 - cock - hen
--2--If cock * 5 + hen * 3 + chicken / 3 = 100 Then
--3--Form1.Print "共有解法"; num
[Modify]24
'Modify.Bas模块中的Insert过程随机产生9个[1-100]的整数数组,并按从
'小到大的顺序进行排序,再从键盘输入一个正数,找到该数在原来9个数中
'的插入点,使得该数插入数组后,数组的10个数依然是从小到大的顺序。
[Key]
--1--x(i) = Int(100 * Rnd) + 1
--2--If ins < x(i) Then Exit For
--3--x(j + 1) = x(j)
--4--x(pos) = ins
[Modify]25
'Modify.Bas模块中的total过程是计算s=7+77+777+……+(n个7组成的数)。
'Modify.Bas模块中的number函数是求出n个7所组成的数。
[Key]
--1--s = s + number(i)
--2--Public Function number(ByVal n As Integer) As Single[OR]Public Function number(n As Integer) As Single
--3--number = number + 7 * 10 ^ (i - 1)
[Modify]26
'Modify.Bas模块中Faboni

a过程是对以下数列进行运算:
'有一个数列,它的前三个数是0,1,2,从第四个数起,每
'个数都是它前面的两个数之和,求出该数列的第17个数是多少,
'并求出该数列的第几个数起每个数都超过1E+8的。
[Key]
--1--last_one = last_two
--2--last_two = this_one
--3--i = i + 1
--4--Form1.Print "No:"; Str(i - 1); "is > 1E+8"[OR]Form1.Print "No:"; i - 1; "is > 1E+8"
[Modify]27
'Modify.Bas模块中DToB过程是将一个十进制正整数转换成为一个二进制数。
[Key]
--1--res = Dec Mod 2
--2--Bin = Trim(Str(res)) & Bin
--3--Dec = Dec \ 2[OR]Dec = Int(Dec / 2)[OR]Dec = Fix(Dec / 2)
--4--Loop While Dec > 0
[Modify]28
'Modify.Bas模块中的Del过程从一个含有10个数组元素的数组中
'删除一个指定的数据,若该数据不存在,则给出提示。
[Key]
--1--a(i) = Int(Rnd * 100) + 1
--2--pos = i
--3--For i = pos To 9
--4--a(i) = a(i + 1)
[Modify]29
'Modify.Bas模块中的sortchar过程是对字符串进行整理,
'首先从键盘上输入一个任意的字符串,而后将该字符串
'的所有组成字符拆分开,再按照字符的ASCII码从小到大
'的顺序将这些字符重新组成新的字符串,例如输入a4fkze5,
'重新组合的字符串为45aefkz。
[Key]
--1--l = Len(x)
--2--c(i) = Mid(x, i, 1)
--3--For j = i + 1 To l
--4--y = y & c(i)
[Modify]30
'Modify.Bas模块中的Uppersen过程是将一个英文句子的
'每个单词的首字母都变成大写,其余字母为小写。
'例如:输入“I am a GOOD student.”,输出为“I Am A Good Student.”。
[Key]
--1--l = Len(oldsen)
--2--lastchar = " "[OR]lastchar = Space(1)
--3--char = Mid(oldsen, i, 1)
--4--newsen = newsen + UCase(char)
--5--newsen = newsen + LCase(char)
[Modify]31
'Modify.Bas模块中的过程aboveave是先计算出30个1--100之间的随机整数的平均值,
'再找出这30个数中数值在平均值之上的数据,并统计出这些数据的个数。
[Key]
--1--sum = sum + x(i)
--2--ave = sum / 30
--3--count = count + 1
--4--If count Mod 5 = 0 Then Form1.Print
[Modify]32
'Modify.Bas模块中的过程ComDiv是求任意两个正整数的最大公约数?
[Key]
--1--Loop While m <= 0 Or n <= 0[OR]Loop Until m > 0 And n > 0
--2--div = m
--3--Do Until m Mod div = 0 And n Mod div = 0[OR]Do While m Mod div <> 0 Or n Mod div <> 0
--4--div = div - 1
[Modify]33
'Modify.Bas模块中的过程ComMulti是求任意两个正整数的最小公倍数。
'最小公倍数是两个数的乘积除以这两个数的最大公约数。
'Modify.Bas模块中的Div函数过程用于求任意两个正整数的最大公约数。
[Key]
--1--Loop While m <= 0 Or n <= 0
--2--multi = m * n / Div(m, n)
--3--div = m
--4--div = div - 1
[Modify]34
'Modify.Bas模块中的过程DelRepeat是进行数组整理,将一个由50个10--99的
'随机整数组成的数组中与前面数组元素重复的数据删除,只保留第一次

出现
'该数据的数组元素,最后将整理后数组输出。
[Key]
--1--count = 50
--2--If x(j) = x(i) Then[OR]If x(i) = x(j) Then
--3--i = i + 1
--4--count = count - 1
--5--Loop While i <= count
[Modify]35
'Modify.Bas模块中的PrintArray过程是用于打印一个5行5列的数字方阵,
'并使两对角线上元素均为1,其余均为2。
'要求打印的数字方阵两列数字之间空3格,两行之间空一行。
[Key]
--1--If i <> j And i <> 6 - j Then
--2--Form1.Print Str(a(i, j)) + Space(3);[OR]Form1.Print a(i, j); Space(3);
--3--Form1.Print: Form1.Print
[Modify]36
'Modify.Bas模块中的SortData过程是把10个[30,50]的随机
'整数并按照从小到大的顺序打印出来。
'Modify.Bas模块中的Swap过程用于交换两个变量的值。
[Key]
--1--a(i)= Int(Rnd * 21 + 30)
--2--For j = i + 1 To 10
--3--Swap a(i), a(j)[OR]Call Swap (a(i), a(j))
--4--Form1.print a(i)[OR]Form1.print a(10)
[Modify]37
'设计一个矩阵转置的程序。
'Modify.Bas模块中的Transpose过程用于产生一个转置矩阵。
'所谓转置是指将二维数组中所有行和对应列的元素进行交换。
[Key]
--1--For j = 1 To i-1[OR]For j = 1 To i
--2--Swap a(i, j), a(j, i)[OR]Call Swap(a(i, j), a(j, i))
--3--Form1.Print a(i,j);
[Modify]38
'Modify.Bas模块中的JiSuan过程是用于计算1-(1/2)+(1/3)-...+(1/99)-(1/100)
'的值并打印出来。
[Key]
--1--Dim k As Single
--2--For i = 1 To 100 Step 2[OR]For i = 1 To 99 Step 2
--3--k = -1 / (i + 1)
[End]

相关文档
最新文档