'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,依次输入a,b,c,判断此方程是否有实根
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.输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。
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
Next i
End Sub
Private Sub Command19_Click()
'23.随机产生10个1~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的倍数之和。(一个数如果同时是7和5的倍数,则只能加一次。
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
Next i
MsgBox("sum="&sum)
End Sub
Private Sub Command25_Click()
'25.已知有序数组a(),编程插入x(x的值为14)。数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。
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+1~n个元素中选最小元素的下标
Next j
t=a(i)'i+1~n个元素中选出的最小元素与第i个元素交换
a(i)=a(iMin)
a(iMin)=t
Next i
For k=0 To n'查找欲插入数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之间所有能被3和7整除的数之和
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.编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。调用该过程。(提示:只能被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
文档为doc格式