VB程序设计30道编程题

发布时间:2020-03-08 22:25:40   来源:文档文库   
字号:

'1.输入3个数,输出最大的数

Private Sub Command11_Click()

Dim max%

X1=Val(InputBox("input"))

X2=Val(InputBox("input"))

x3=Val(InputBox("input"))

max=X1

If max<=X2 Then

max=X2

End If

If max<=x3 Then

max=x3

End If

MsgBox("3个数之中的最大数max="&max)

End Sub

Private Sub Command12_Click()

'2.'有一元二次方程:aX2+bX+c=0,依次输入abc,判断此方程是否有实根

a=Val(InputBox("input"))

B=Val(InputBox("input"))

c=Val(InputBox("input"))

s=B^2-4*a*c

If a<>0 Then

If s=0 Then

MsgBox("两个相等实根")

ElseIf s>0 Then

MsgBox("两个不相等实根")

ElseIf s<0 Then

MsgBox("两个不相等虚根")

End If

Else

MsgBox("无解")

End If

End Sub

Private Sub Command13_Click()

'3.输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示"恭喜!成绩通过!",若小于60,则弹出消息框,显示"抱歉!成绩没有通过!"

X=Val(InputBox("input"))

If X>=60 Then

MsgBox("恭喜!成绩通过!")

Else

MsgBox("抱歉!成绩没有通过!")

End If

End Sub

Private Sub Command14_Click()

'4.输入一年份,判断它是否为闰年,并显示有关信息。(判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除)

yes=Val(InputBox("year"))

If yes Mod 4=0 And yes Mod 100<>0 Or yes Mod 400=0 Then

MsgBox(yes&"是闰年")

Else

MsgBox(yes&"不是闰年")

End If

End Sub

Private Sub Command15_Click()

'5.输入学生的百分制成绩,转换输出为五级制成绩,90100分转换为优秀,8089转换为良好,7079转换为中等,6069转换为及格,060转换为不及格。

score=Val(InputBox("input"))

Select Case score

Case Is>=90

MsgBox("优秀")

Case Is>=80

MsgBox("良好")

Case Is>=70

MsgBox("")

Case Is>=60

MsgBox("及格")

Case Else

MsgBox("不及格")

End Select

End Sub

'6.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。例如,产生246,输出是642

a="645"

n=Len(a)

For i=1 To Int(n/2)

c=Mid(a,i,1)

Mid(a,i,1)=Mid(a,n-i+1,1)

Mid(a,n-i+1,1)=c

Next i

MsgBox(a)

End Sub

'7.输入两个整数,求它们的最大公约数

m=Val(InputBox("input m"))

n=Val(InputBox("input n"))

If n>m Then

t=n

n=m

m=t

End If

r=m Mod n

Do While r<>0

m=n

n=r

r=m Mod n

Loop

MsgBox("最大公约数="&n)

End Sub

21.随机产生10[30,100]内的整数,求最小值及所对应的下标。

Dim a(10)As Integer

For i=0 To 9

a(i)=Int(Rnd*70+30)

Next i

min=a(0)

Mini=0

For i=1 To 9

If a(i)<=min Then

min=a(i)

Mini=i

End If

Next i

MsgBox("min="&min)

MsgBox("mini="&Mini)

End Sub

Private Sub Command18_Click()

'22.随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。

Dim a(10,10)As Integer

For i=0 To 9

For j=0 To 9

a(i,j)=Int(Rnd*20+10)

Next j

Next i

For i=0 To 9

For j=0 To i

Print a(i,j),

Next j

Print

Next i

End Sub

Private Sub Command19_Click()

'23.随机产生101~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。

Dim a(10)As Integer,max%,min%

For i=0 To 9

a(i)=Int(Rnd*101)

Print a(i)

Next i

max=a(0)

min=a(0)

For i=1 To 9

If a(i)>=max Then

max=a(i)

Else

min=a(i)

End If

sum=sum+a(i)

Next i

MsgBox("max="&max)

MsgBox("min="&min)

MsgBox("avg="&sum/10)

End Sub

Private Sub Command2_Click()

'8.编程求200--400范围内5的倍数或7的倍数之和。(一个数如果同时是75的倍数,则只能加一次。

Dim sum1%,sum2%

sum1=0:sum2=0

For i=200 To 400

If i Mod 5=0 Then

sum1=sum1+i

ElseIf i Mod 7=0 Then

sum2=sun2+i

End If

Debug.Print i,sum1,sum2

Next i

MsgBox("5的倍数之和sum="&sum1)

MsgBox("7的倍数之和sum="&sum2)

End Sub

Private Sub Command20_Click()

'17.编程求斐波那契数列前11项。(斐波那契数列:F(0)=f(1)=1,F(n)=F(n-1)+F(n-2)n>=2

Dim f(11)As Integer

f(0)=1

f(1)=1

For i=2 To 10

f(i)=f(i-1)+f(i-2)

Next i

For i=0 To 10

Print f(i);

Next i

End Sub

Private Sub Command21_Click()

'18.将输入的字符串以反序显示。例如:输入"ASDFGT",显示"TGFDSA"

Dim s(10)As String

For i=0 To 9

s(i)=InputBox("input")

Next i

For i=9 To 0 Step-1

Print s(i)

Next i

End Sub

Private Sub Command22_Click()

'19.随机产生10[30,100]内的整数,求最大值及所对应的下标

Dim a(10)As Integer,max%

For i=0 To 9

a(i)=Int(Rnd*70+30)

Next i

max=a(0)

maxi=0

For i=1 To 9

If a(i)>=max Then

max=a(i)

maxi=i

End If

Next i

MsgBox("max="&max)

MsgBox("maxi="&maxi)

End Sub

Private Sub Command23_Click()

'20.随机产生10[30,100]内的整数,求最大值、最小值和平均值。

Dim a(10)As Integer,max%,min%

For i=0 To 9

a(i)=Int(Rnd*70+30)

Next i

max=a(0)

min=a(0)

For i=1 To 9

If a(i)>=max Then

max=a(i)

Else

min=a(i)

End If

sum=sum+a(i)

Next i

MsgBox("max="&max)

MsgBox("min="&min)

MsgBox("avg="&sum/10)

End Sub

Private Sub Command24_Click()

'24.利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所有数据之和

Dim a(4,4)As Integer

Dim sum%,i%,j%

For i=0 To 3

For j=0 To 3

a(i,j)=Int(Rnd*30+20)

sum=sum+a(i,j)

Next j

Next i

For i=0 To 3

For j=0 To 3

Print a(i,j),

Next j

Print

Next i

MsgBox("sum="&sum)

End Sub

Private Sub Command25_Click()

'25.已知有序数组a(),编程插入xx的值为14)。数组a中的元素分别为{12648975631002031}

Dim a(),iMin%,n%,i%,j%,t%

a=(2,6,4,89,75,63,100,20,31)

X=14

n=UBound(a)'获得数组的下标上界

For i=0 To n-1'进行n-1轮比较

iMin=i'对第i轮比较时,初始假定第i个元素最小

For j=i+1 To n'在数组i+1n个元素中选最小元素的下标

If a(j)

Next j

t=a(i)'i+1n个元素中选出的最小元素与第i个元素交换

a(i)=a(iMin)

a(iMin)=t

Next i

For k=0 To n'查找欲插入数x在数组中的位置

If X

Next k

ReDim Preserve a(n+1)'数组增加一个元素

For i=n To k Step-1'数组元素后移一位,腾出位置

a(i+1)=a(i)

Next i

a(k)=X

For i=0 To n+1

Print a(i);

Next

End Sub

Private Sub Command26_Click()

'26.编写一函数,计算Double类型一维数组所有元素的平均值。

Dim a(),n%,s!

a=(1,4,7,9,12,23,56)

n=UBound(a)

s=sum1(a())

MsgBox("sum="&s)

MsgBox("avg="&s/n)

End Sub

Function sum1%(X())

Dim i%

sum1=0

For i=0 To UBound(X)

sum1=sum1+X(i)

Next i

End Function

Private Sub Command27_Click()

'27.用函数过程求表达式1+1/2+1/3+1/4++1/n的和.

n=InputBox("INPUT")

s=sum2(n)

MsgBox("SUM2="&s)

End Sub

Function sum2!(ByVal n As Integer)

Dim i%

sum2=0

For i=1 To n

sum2=sum2+1/i

Next i

End Function

Private Sub Command28_Click()

'28.编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定

Dim a(),n%,min%

a=(1,4,7,9,12,-23,56)

n=UBound(a)

Call procmin(a(),min)

MsgBox("min="&min)

End Sub

Sub procmin(X(),ByRef min%)

Dim i%

min=X(0)

For i=1 To UBound(X)

If X(i)<=min Then min=X(i)

Next i

End Sub

Private Sub Command29_Click()

'29.编一个函数,求一维数组a中的最大值,函数的形参自己确定。

Dim a(),n%,s!

a=(1,4,7,9,12,23,56)

n=UBound(a)

s=max(a())

MsgBox("max="&s)

End Sub

Function max%(X())

Dim i%

max=X(0)

For i=1 To UBound(X)

If X(i)>max Then max=X(i)

Next i

End Function

Private Sub Command3_Click()

'9.计算100~300之间所有能被37整除的数之和

Dim sum%

sum=0

For i=100 To 300

If i Mod 3=0 And i Mod 7=0 Then

sum=sum+i

Private Sub Command30_Click()

'30.编写一个过程计算并输出区间[1001000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。调用该过程。(提示:只能被1和自身整除的自然数称为素数。)

Dim i%,sum!,f%

sum=0

For i=100 To 1000

Call procs(i,f)

If f=1 Then

sum=sum+i

End If

Next i

MsgBox("sum="&sum)

End Sub

Sub procs(ByVal X%,ByRef f%)

Dim i%

f=1

For i=2 To X-1

If i Mod X=0 Then

f=0

Exit For

End If

Next i

End Sub

Private Sub Command4_Click()

'10.分别统计1-100中,满足3的倍数、7的倍数的数各有多少

m=0:n=0

For i=1 To 100

If i Mod 3=0 Then

n=n+1

ElseIf i Mod 7=0 Then

m=m+1

End If

Next i

MsgBox("3的倍数个数="&n)

MsgBox("7的倍数个数="&m)

End Sub

Private Sub Command5_Click()

'11.某次歌曲大奖赛,有7个评委。如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分

Dim sum%,max%,min%

sum=0:max=0:min=999

For i=1 To 7

X=Val(InputBox("input"))

If max<=X Then

max=X

End If

If min>=X Then

min=X

End If

sum=sum+X

Next i

Avg=(sum-max-min)/5

MsgBox("最高分="&max)

MsgBox("最低分="&min)

MsgBox("总和="&sum)

MsgBox("平均分="&Avg)

End Sub

'12.输入一串字符,统计其中字母A(不区分大小写)出现的次数。

Dim ch As String

ch="ASDEAS"

n=0

For i=1 To Len(ch)

st=Mid(ch,i,1)

If UCase(st)="A"Then

n=n+1

End If

Next i

MsgBox("字符串中出现A字符的系数"&n)

End Sub

Private Sub Command6_Click()

'13.我国目前有13亿人口,按人口年增长率0.8%计算,多少年后我国人口将超过26亿。

n=0

X=13

Do While X<=26

X=X*1.008

n=n+1

Loop

MsgBox(n)

End Sub

Private Sub Command7_Click()

'14.小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少?

X=1

For i=6 To 1 Step-1

X=(X+1)*2

Next i

MsgBox(X)

End Sub

Private Sub Command8_Click()

'15.100以内的素数

For i=1 To 100

flag=1

For j=2 To i-1

If i Mod j=0 Then

flag=0

End If

Next j

If flag=1 Then

MsgBox(i&"是素数")

End If

Next i

End Sub

Private Sub Command9_Click()

'

16

.百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。

n=0

For X=0 To 33

For y=0 To 50

z=100-X-y

If 3*X+2*y+0.5*z=100 Then

Print X,y,z

End If

Next y

Next X

End Sub

本文来源:https://www.2haoxitong.net/k/doc/8f9436466c175f0e7cd13775.html

《VB程序设计30道编程题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式