" />
1.
用输入对话框输入x ,根据下式计算对应的y ,并在窗体上输出y 的值。 +sinx x>10
y= 0 x=10
2x 3+6 x<10
程序写在命令按钮Command1的Click 事件中。
参考答案:
Private Sub Command1_Click()
Dim x As Single
Dim y As Single
x = V al(InputBox("please input a number"))
Select Case x
Case Is > 10
y = Sqr(x) + Sin(x)
Case Is = 10
y = 0
Case Is < 10
y = 2 * x ^ 3 + 6
End Select
Print y
End Sub
2. 编写一个程序,根据上网时间计算上网费用,上机时间用输入对话框输入。公
式如下:
同时,为了鼓励多上网,每月最多不超过600元。
参考答案:
Private Sub Command1_Click()
Dim times As Single, money As Single
times = Val(InputBox("please input a number"))
Select Case times
Case Is < 10
money = 50
Case Is < 60
money = 6 * times
Case Is >= 60
money = 4 * times
End Select
If money > 600 Then money = 600
Print times, money
??
???≥<小时元每小时小时元
每小时小时元基数费用计算规则60460~1061050
End Sub
3. 计算s=1+x/2+x 2/3+x 3/4+ … +x n-1/n ;已知n=20,x 值从键盘输入。
参考答案:
Private Sub Command1_Click()
Dim n As Integer, x As Single, s As Single, i As Integer
x = Val(InputBox("please input x"))
n = Val(InputBox("please input n"))
s = 0
For i = 1 To n
s = s + x ^ (i - 1) / i
Next i
Print s
End Sub
4. 用以下公式计算Sin(x)的值,当最后一项的绝对值小10
-7时停止计算。X 由键
盘输入。程序写在窗体的click 事件中。 参考答案: Private Sub Command1_Click()
Dim x As Single, s As Single, item As Single, n As Integer
x = Val(InputBox("please input x"))
s = 0
n = 2
item = x
While Abs(item) > 0.0000001
s = s + item
item = -item * x * x / n / (n + 1)
n = n + 2
Wend
Print s
End Sub
5. 编写程序,单击窗体时在窗体上打印出如下所示的图形(要求使用多重循环实
现)。
*
***
*****
*******
)!
12()1(......!7!5!3)(121753--++-+-
=--n x x x x x x Sin n n
*********
*******
*****
***
*
参考答案:
Private Sub Form_click()
Dim i As Integer, j As Integer
For i = 1 To 5
Print Space(5 - i);
For j = 1 To 2 * i - 1
Print "*";
Next j
Next i
For i = 1 To 4
Print Space(i);
For j = 1 To 9 - 2 * i
Print "*";
Next j
Next i
End Sub
6.编写一个程序,找出100到200之间所有的质数,并按五个数一行显示在窗体
上,程序写在窗体的click事件中。
参考答案:
Private Sub Form_click()
Dim n As Integer, k As Integer, c As Integer
For n = 101 To 199 Step 2
For k = 2 To Int(Sqr(n))
If n Mod k = 0 Then Exit For
Next k
If k > Int(Sqr(n)) Then
Print n;
c = c + 1
If c Mod 5 = 0 Then Print
End If
Next n
End Sub
7.计算下列表达值并在窗体上输出。要求:用输入对话框输入m和n (m≥n≥0);
用Function fact (x As Integer)函数求x!的值
m!
n!(m-n)!
参考答案:
Private Sub Command1_Click()
Dim n As Integer, m As Integer, s As Single
Do
m = V al(InputBox("please input m"))
n = V al(InputBox("please input n"))
Loop Until n > 0 And m > n
s = nfact(m) / (nfact(n) * nfact(n - m))
Print s
End Sub
Private Function nfact(x As Integer) As Long
Dim temp As Long, i As Integer
temp = 1
For i = 1 To x
temp = temp * i
Next i
nfact = temp
End Function
8.编写一个自定义函数,用于把一个十进制整数转换为二进制,要求以字符串形
式返回。
参考答案:
Function DTOB(n As Integer) As String
Dim s As String, c As String
s = ""
While n > 0
c = Trim(Str(n Mo
d 2))
s = c + s
n = n \ 2
Wend
DTOB = s
End Function
9.编写一个自定义函数,用于把一个字符串形式的八进制数转换为十进制数,要
求以数字形式返回。
参考答案:
Function OTOD(s As String) As Integer
Dim n As Integer, c As Integer, i As Integer, slen As Integer
slen = Len(s)
For i = 1 To slen
c = V al(Mid(s, i, 1))
n = n + c * 8 ^ (slen - i)
Next i
OTOD = n
End Function
10.编写一个自定义函数,用于计算single类型一维数组的平均值。
参考答案:
Function avgArray(a() As Single, n As Integer) As Single
Dim i As Integer, s As Single
s = 0
For i = 1 To n
s = s + a(i)
Next i
avgArray = s / n
End Function
11.编写一个自定义函数,用于判断一个数n是否为质数,如果为质数则函数返回
true,否则返回false
参考答案:
Function prime(n As Integer) As Boolean
Dim k As Integer
For k = 2 To Int(Sqr(n))
If n Mod k = 0 Then Exit For
Next k
If k > Int(Sqr(n)) Then
prime = True
Else
prime = False
End If
End Function
12.产生100个∈[3,300]的随机整数,先求它们的平均值,再将这些数中大于平
均值的数按从小到大的顺序打印出来。
参考答案:
Private Sub Form_click()
Dim a(1 To 100) As Integer, b(1 To 100) As Integer
Dim t As Integer, bLen As Integer, i As Integer, j As Integer
Dim sum As Long, avg As Single
sum = 0
For i = 1 To 100
a(i) = Int(Rnd * 298) + 3
sum = sum + a(i)
Next i
avg = sum / 100
bLen = 1
For i = 1 To 100
If a(i) > avg Then
b(bLen) = a(i)
bLen = bLen + 1
End If
Next i
For i = 1 To bLen - 2
For j = i + 1 To bLen - 1
If b(i) > b(j) Then
t = b(i)
b(i) = b(j)
b(j) = t
End If
Next j
Next i
For i = 1 To bLen - 1
Print b(i)
Next i
End Sub
13.随机产生10个互不相等的二位正整数,并将这10个数按从小到大的顺序输出,
程序写在窗体的click事件中。
参考答案:
Private Sub Form_click()
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer, temp As Integer
a(1) = Int(Rnd * 90) + 10
For i = 2 To 10
temp = Int(Rnd * 90) + 10
For j = 1 To i - 1
If a(j) = temp Then Exit For
Next j
If j > i - 1 Then
a(i) = temp
Else
i = i - 1
End If
For i = 1 To 10
Print a(i);
Next i
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
For i = 1 To 10
Print a(i);
Next i
End Sub
14.编写一个自定义过程,实现一个n阶矩阵的转置。
转置前的矩阵转置后的矩阵
1 2 3 4 1 1 1 1
1 2 3 4 2 2 2 2
1 2 3 4 3 3 3 3
1 2 3 4 4 4 4 4
参考答案:
Sub transpose(a() As Integer, n As Integer)
Dim i As Integer
Dim j As Integer, t As Integer
For i = 2 To n
For j = 1 To i - 1
t = a(i, j)
a(i, j) = a(j, i)
a(j, i) = t
Next i
Next i
End Sub
15.编写一个程序,实现如下功能,让用户通过inputbox输入一个大于等于6的偶
数n,并在窗体上显示将n分解为两个质数之和的所有情况。例如:10=3+7和10=5+5等,程序写在窗体的click事件中。
Private Sub Form_click()
Dim n As Long, n1 As Long, n2 As Long
Dim k As Integer
Do
n = V al(InputBox("please input a number"))
Loop Until n > 6 And n Mod 2 = 0
For n1 = 2 To n / 2
For k = 1 To Int(Sqr(n1))
If n1 Mod k = 2 Then Exit For
Next k
If k > Int(Sqr(n1)) Then
n2 = n - n1
For k = 2 To Int(Sqr(n2))
If n2 Mod k = 0 Then Exit For
Next k
If k > Int(Sqr(n2)) Then
Print n; "="; n1; "+"; n2
End If
End If
Next n1
End Sub
16.用户界面如图所示,用于将学生学过的单词在列表框中显示出来,现要求完成:
(1)单击“增加单词”按钮,将文本框Text1.Text中的单词添加到列表框
中并显示列表框中的单词数;
(2)单击“删除单词”按钮,删除列表框中被选中的项并显示列表框中的
单词数;
(3)单击“全部清除”按钮,删除列表框的全部选择项并显示列表框中的
单词数;
(4)单击“退出”按钮,结束程序
部分程序代码如下:
Private Sub Form_Load()
Label1.Caption="请输入单词"
Label2.Caption="单词数"
Command1.Caption="增加单词"
Command2.Caption="删除单词"
Command3.Caption="全部清除"
Command4.Caption="退出"
List1.AddItem "apple"
List1.AddItem "chinese"
List1.AddItem "child"
List1.AddItem "double"
List1.AddItem "park"
List1.AddItem "top"
End sub
17.现有3个成绩文件Cj1.txt、Cj2.txt、Cj3.txt,记录有学生的姓名和百分制
成绩,格式如左下图,请设计一个程序将这3个成绩文件中成绩小于60分的学生挑出来,按同样格式一起存入文件Bjg.txt中。程序写在命令按钮Command1
参考答案:
Private Sub Command1_Click()
Dim sname As String, score As Integer
Open "bjg.txt" For Output As #1
Open "cj1.txt" For Input As #2
While Not EOF(2)
Input #2, sname, score
If score < 60 Then
Print #1, sname; ","; score
Wend
Close #2
Open "cj2.txt" For Input As #2
While Not EOF(2)
Input #2, sname, score
If score < 60 Then
Print #1, sname; ","; score
Wend
Close #2
Open "cj3.txt" For Input As #2
While Not EOF(2)
Input #2, sname, score
If score < 60 Then
Print #1, sname; ","; score
Wend
Close #2
Close #1
End Sub
18.程序启动后,界面如右图所
示:输入两点坐标,单击命
令按钮,显示坐标系、坐标
原点和两点的连线.请给
“显示连线”按钮编写代
码。
Private sub command1_click()
Dim x1 as single
Dim y1 as single
Dim x2 as single
Dim y2 as single
X1= val(text1.text)
Y1= val(text2.text)
X2= val(text3.text)
Y2= val(text4.text)
Picture1.scale (-100,100)-(100,-100) Picture1.line (-100,0)-(100,0)
Picture1.line (0,100)-(0,-100)
Picture1.currentx = 0
Picture1.currenty = 0
Picture1.print “(0,0)”
Picture1.line (x1,y1)-(x2,y2)
End sub