" />
文档库 最新最全的文档下载
当前位置:文档库 › 自编程序设计题参考答案

自编程序设计题参考答案

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

Print

Next i

For i = 1 To 4

Print Space(i);

For j = 1 To 9 - 2 * i

Print "*";

Next j

Print

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

Print

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

相关文档
相关文档 最新文档