VB实验任务8答案

VB实验任务8答案
VB实验任务8答案

实验任务八

课程名称:程序设计基础VB

实验名称——八、循环结构程序设计(2)

一、实验目的:

1.进一步掌握循环语句的基本结构

2.清楚循环流程,掌握循环语句的描述

4.掌握多重循环结构程序的设计方法

二、实验内容(包括实验要求(题目)、实验步骤、程序清单、运行情况):

程序完善题的做题技巧和方法

建议,先根据程序运行的参考界面和题目要求,分析代码中变量和对象各自的作用(一般从输入或输出方面着手推导和分析),然后填充程序[希望同学们通过实践掌握]

实验1 阅读程序,人工列表写出下列循环的运行次数和执行结果(注意输出格式),并上机验证结果,并充分使用单步

实验2实验书103页实验5-11 改错题。窗体如图所示。要求程序运行时,在文本框text1中输入一个姓氏,单击“删除”按钮(名称为Command1),则可删除列表框List1中所有该姓氏的项目。编程以下程序实现此功能。 在调试时发现,如输入“陈”,可以正确删除所有“陈”的项目,但输入“刘”,但输入“刘”,则只删除了“刘邦”,如图b 所示,这说明程序不能适应所有情况,需要修改。

Private Sub Command1_Click() Dim n%, k%

n = Len(Text1.Text)

For k = List1.ListCount - 1 To 0 Step -1

If Left(List1.List(k), n) = Text1.Text Then List1.RemoveItem k End If Next k End Sub

实验3 实验书实验6-5 编程实现求Armstrong 数,Armstrong 数具有如下特征:一个n 位数等于其各位数的n 次方之和。例如,153=13+53+33

1634=14+64+34+44

提示:把数值转换成字符串后,利用Mid 函数取每一位上的数。

法一:

Private Sub Command1_Click()

Dim i As Integer, a As Integer, j%, b As Integer, k%, c%, h As Long, d As Long For i = 10 To 99

a = Val(Left(a, 1)) ^ 2 + Val(Right(a, 1)) ^ 2 If a = i Then Print i Next i

For j = 100 To 999

b = Val(Left(j, 1)) ^ 3 + Val(Mid(j, 2, 1)) ^ 3 + Val(Right(j, 1)) ^ 3 If b = j Then Print b Next j

For k = 1000 To 9999

c = Val(Left(k, 1)) ^ 4 + Val(Mid(k, 2, 1)) ^ 4 + Val(Mid(k, 3, 1)) ^ 4 + Val(Right(k, 1)) ^ 4

If k = c Then Print c

法二:

Dim n%, k%

n = Len(Text1.Text)

For k = 0 To List1.ListCount - 1

If Left(List1.List(k), n) = Text1.Text Then List1.RemoveItem k k = k - 1 End If Next k

For h = 10000 To 99999

d = Val(Left(h, 1)) ^ 5 + Val(Mid(h, 2, 1)) ^ 5 + Val(Mid(h, 3, 1)) ^ 5 + Val(Mid(h, 4, 1))

^ 5 + Val(Right(h, 1)) ^ 5

If d = h Then Print d

Next h

End Sub

法二:

Private Sub Command2_Click()

Dim i&, n%, s&, m%

For i = 1 To 99999

n = Len(CStr(i))

s = 0

For j = 1 To n

s = s + Mid(CStr(i), j, 1) ^ n

Next j

If s = i Then Print i

Next i

End Sub

法三:

Private Sub Command3_Click()

Dim i As Long, a As Long, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer For i = 1 To 99999

a = i \ 10000

b = (i - 10000 * a) \ 1000

c = (i - 10000 * a - 1000 * b) \ 100

d = (i - 10000 * a - 1000 * b - 100 * c) \ 10

e = i - 10000 * a - 1000 * b - 100 * c - 10 * d

n = Len(CStr(i))

If i = a ^ n + b ^ n + c ^ n + d ^ n + e ^ n Then

Print i

End If

Next i

End Sub

实验4 实验书105页实验5-15在界面上放三个按钮,分别打出下面三幅图。

数字三角形字母倒三角图形数字菱形图形

Private Sub Command1_Click()

Cls

For i = 1 To 9

Print Spc(9 - i);

For j = 1 To 2 * i - 1

Print CStr(i);

Next j

Print

Next i

Private Sub Command2_Click()

Cls

For i = 1 To 9

Print Spc(i - 1);

For j = 1 To 19 - 2 * i

Print Chr(i + 64);

Next j

Print

Next i

End Sub

Private Sub Command3_Click()

Cls

For i = 1 To 9

Print Spc(9 - i);

For j = 1 To 2 * i - 1

Print CStr(i);

Next j

Print

Next i

For i = 1 To 8

Print Spc(i);

For j = 1 To 17 - 2 * i

Print CStr(9 - i);

Next j

Print

Next i

End Sub

Private Sub Command4_Click()

Cls

For i = 1 To 9

Print Space(9 - i); String(2 * i - 1, CStr(i))

Next i

End Sub

实验5 使用随机函数生成30个学生的成绩,并求其中的最高分和第二高分。Private Sub Form_Click()

Randomize

Dim a%, b%, i%, max1%, max2%, k%

Print "30个学生的成绩是:"

a = Int(Rnd * 100 + 1) '先生成2个成绩最为最大的两个,存储在max1和max2中

Print a;

max1 = a

a = Int(Rnd * 100 + 1)

Print a;

max2 = a

If max2 > max1 Then '如果max2比max1大,则交换两数

temp = max1

max1 = max2

max2 = temp

End If

For i = 3 To 30

a = Int(Rnd * 100 + 1)

Print a;

If i Mod 10 = 0 Then Print

If a > max1 Then

max1 = a

ElseIf a > max2 Then

max2 = a

End If

Next i

Print "最高分是:" & max1

Print "第二高分是:" & max2

End Sub

三、实验体会(包括对于本次实验的小结,实验过程中碰到的问题等)

相关主题
相关文档
最新文档