2数组程序汇总.docx
《2数组程序汇总.docx》由会员分享,可在线阅读,更多相关《2数组程序汇总.docx(13页珍藏版)》请在冰豆网上搜索。
![2数组程序汇总.docx](https://file1.bdocx.com/fileroot1/2023-2/1/d0787db1-84c4-46b3-b1bc-e8ebb6701537/d0787db1-84c4-46b3-b1bc-e8ebb67015371.gif)
2数组程序汇总
目录
1、将10个1到100的随机数存放在数组中,并输出。
2
2、打印输出Fibonacci数列的前20项,该数列定义为1,1,2,3,5,8,13,…..2
3、编写一个用来统计某班级英语成绩的程序。
3
4、冒泡排序(升序):
生成10个元素数组,按升序排序,分别输出排序前后所有元素。
4
5、比较排序(降序):
生成10个元素数组,按降序排序,分别输出排序前后所有元素。
4
6、交换排序(降序):
生成10个元素数组,按降序排序,分别输出排序前后所有元素。
5
7、打印输出以下图形。
6
8、计算输出以下公式的值,X、N的值为输入:
7
9、用户从键盘上输入股票30天的收盘价,程序计算并显示滑动平均价(每行显示五天滑动平均价)。
说明:
当天的滑动平均价为前五天收盘价的平均值,前四天的滑动平均价按当天收盘价计算。
8
10、定义动态数组,可根据用户需要确定数组元素个数,随机生成数组元素的值(100以内整数);再提示用户输入一个100以内整数,查找此数是否在这组元素中,显示结果以及生成的数组部元素。
9
11、定义一个长度为20的数组,随机生成10个100以内整数存于数组并按降序排列;再提示用户输入一个100以内整数,将此数插入排序后的数组中输出显示数组全部元素。
10
1、将10个1到100的随机数存放在数组中,并输出。
OptionBase1
PrivateSubForm_Click()
DimA(10)asinteger
Randomize
Fori=1To10
A(i)=Int(Rnd*100)
Next
Fori=1To10
PrintA(i)
Next
EndSub
2、打印输出Fibonacci数列的前20项,该数列定义为1,1,2,3,5,8,13,…..
【分析】Fabonacci数列的特点是:
1n=1
Fib(n)1n=2
fib(n-2)+fib(n-1)n>=3
【设计】定义一个数组FAB(1TO20)
赋初值:
fib
(1)=1:
fib
(2)=1
计算Fib(n)=fib(n-2)+fib(n-1)(3<=n<=20)
输出Fib(n)(1<=n<=20)
PrivateSubForm_Click()
DimiAsInteger,fib(1To20)AsInteger
fib
(1)=1:
fib
(2)=1
Fori=3To20
fib(i)=fib(i-1)+fib(i-2)
Next
Fori=1To20
Printfib(i),
IfiMod4=0ThenPrint'打印换行
Next
EndSub
3、编写一个用来统计某班级英语成绩的程序。
解题思路:
在通用模块中使用Optionbase1
(0)定义数组DIMS[45]存放学生成绩
定义数组DIMb[5]存放分数段的个数
定义变量Sum存放全班成绩之和
(1)使用循环FOR循环输入学生成绩(固定循环次数):
fori=1to45
利用InputBox()函数输入学生成绩S[i]
Select语句判断S[i]的范围,
例如:
S[i]>90B[1]=B[1]+1
90>S[i]>80B[2]=B[2]+1
…..
OptionBase1
Dima(45),b(5)
PrivateSubForm_Click()
Randomize
Fori=1To10
a(i)=Int(Rnd*100)'a(i)=InputBox("输入成绩")
Printa(i);
SelectCasea(i)
CaseIs>=90
b
(1)=b
(1)+1
CaseIs>=80
b
(2)=b
(2)+1
CaseIs>=70
b(3)=b(3)+1
CaseIs>=60
b(4)=b(4)+1
CaseElse
b(5)=b(5)+1
EndSelect
Next
Print
Print"优秀的有",b
(1):
Print"优良的有",b
(2)
Print"中等的有",b(3):
Print"及格的有",b(4)
Print"不及格的有",b(5)
EndSub
4、冒泡排序(升序):
生成10个元素数组,按升序排序,分别输出排序前后所有元素。
PrivateSubCommand1_Click()
Dimx(1To10)
n=10
Randomize
Fori=1To10
x(i)=Int(Rnd*100+1)
Label1.Caption=Label1.Caption+Str(x(i))
Next
Fori=1Ton-1
Forj=iTo1Step-1
Ifx(j+1)temp=x(j)
x(j)=x(j+1)
x(j+1)=temp
EndIf
Nextj
Nexti
Fori=1Ton
Label2.Caption=Label2.Caption+Str(x(i))
Nexti
EndSub
5、比较排序(降序):
生成10个元素数组,按降序排序,分别输出排序前后所有元素。
PrivateSubCommand1_Click()
Dimx(1To10)
n=10
Randomize
Fori=1To10
x(i)=Int(Rnd*100+1)
Label1.Caption=Label1.Caption+Str(x(i))
Next
Fori=1Ton-1
Forj=i+1Ton
Ifx(i)temp=x(i):
x(i)=x(j):
x(j)=temp
EndIf
Nextj
Nexti
Fori=1Ton
Label2.Caption=Label2.Caption+Str(x(i))
Nexti
EndSub
6、交换排序(降序):
生成10个元素数组,按降序排序,分别输出排序前后所有元素。
PrivateSubCommand1_Click()
Dimx(1To10)
n=10
Randomize
Fori=1To10
x(i)=Int(Rnd*100+1)
Label1.Caption=Label1.Caption+Str(x(i))
Next
Fori=1Ton-1
k=i
Forj=i+1Ton
Ifx(k)k=j
EndIf
Nextj
Ifk<>iThen
temp=x(i):
x(i)=x(k):
x(k)=temp
EndIf
Nexti
Fori=1Ton
Label2.Caption=Label2.Caption+Str(x(i))
Nexti
EndSub
7、打印输出以下图形。
PrivateSubCommand1_Click()
Cls
Fori=5To1Step-1
PrintSpc(2*(5-i));
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubCommand2_Click()
Cls
Fori=1To4
PrintSpc(2*(5-i));
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
Fori=5To1Step-1
PrintSpc(2*(5-i));
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubCommand1_Click()
DimIAsInteger,SAsString,NAsInteger
S="13579"
ForI=1ToLen(S)
N=Val(Mid(S,I,1))
Me.PrintString(6-Int(N/2+1),"")&String(N,"*")
NextI
EndSub
PrivateSubCommand2_Click()
DimIAsInteger,SAsString,NAsInteger
S="135797531"
ForI=1ToLen(S)
N=Val(Mid(S,I,1))
Me.PrintString(6-Int(N/2+1),"")&String(N,"*")
NextI
EndSub
8、计算输出以下公式的值,X、N的值为输入:
1+X/2!
+X2/4!
+X3/6!
+…+XN/2N!
PrivateSubCommand1_Click()
DimiAsInteger,nAsInteger
DimsAsDouble,xAsDouble
x=Val(InputBox("x="))
n=Val(InputBox("n="))
s=1
Fori=1Ton
m=1
Forj=2To2*i
m=m*j
Nextj
s=s+x^i/m
Nexti
Print"1+X/2!
+X2/4!
+X3/6!
+…+XN/2N!
=";s
EndSub
PrivateSubForm_Click()
DimiAsInteger,nAsInteger,m2AsLong
DimsAsDouble,xAsDouble,m1AsDouble
x=Val(InputBox("x="))
n=Val(InputBox("n="))
s=1
m1=1
m2=1
Fori=2To2*nStep2
m1=m1*x
m2=m2*(i-1)*i
s=s+m1/m2
Nexti
Print"1+X/2!
+X2/4!
+X3/6!
+…+XN/2N!
=",s
EndSub
9、用户从键盘上输入股票30天的收盘价,程序计算并显示滑动平均价(每行显示五天滑动平均价)。
说明:
当天的滑动平均价为前五天收盘价的平均值,前四天的滑动平均价按当天收盘价计算。
PrivateSubForm_Click()
Dima(1To30)
Dimb(1To30)
Fori=1To30
a(i)=int(rnd*1000)
‘a(i)=Val(InputBox("请输入第"&i&"天的收盘价"))
Next
Fori=1To4
b(i)=a(i)
Next
Fori=5To30
b(i)=(a(i)+a(i-1)+a(i-2)+a(i-3)+a(i-4))/5
Next
Fori=1To30
PrintLeft(Str(b(i))+Space(5),7);
IfiMod5=0Then
Print
EndIf
Next
EndSub
10、定义动态数组,可根据用户需要确定数组元素个数,随机生成数组元素的值(100以内整数);再提示用户输入一个100以内整数,查找此数是否在这组元素中,显示结果以及生成的数组部元素。
PrivateSubCommand1_Click()
DimchAsString
Dims()AsInteger
n=Val(Text1.Text)
ReDims(n+1)
Randomize
ch=""
Fori=1Ton
s(i)=Int(Rnd*100+1)
ch=ch+Str(s(i))
Next
x=Val(Text2.Text)
Fori=1Ton
Ifx=s(i)Then
ExitFor
EndIf
Nexti
Label1.Caption=ch
Ifx<=nThen
Label2.Caption="输入的数"+Str(x)+"在数组元素中!
"
Else
Label2.Caption="输入的数"+Str(x)+"不在数组元素中!
"
EndIf
EndSub
11、定义一个长度为20的数组,随机生成10个100以内整数存于数组并按降序排列;再提示用户输入一个100以内整数,将此数插入排序后的数组中输出显示数组全部元素。
Dimx(1To20)AsInteger
PublicnAsInteger
PrivateSubCommand1_Click()
n=10
Label1.Caption=""
Label2.Caption=""
Randomize
Fori=1To10
x(i)=Int(Rnd*100+1)
Label1.Caption=Label1.Caption+Str(x(i))
Next
Fori=1Ton-1
k=i
Forj=i+1Ton
Ifx(k)k=j
EndIf
Nextj
Ifk<>iThen
temp=x(i)
x(i)=x(k)
x(k)=temp
EndIf
Nexti
Fori=1Ton
Label2.Caption=Label2.Caption+Str(x(i))
Nexti
EndSub
PrivateSubCommand2_Click()
Label7.Caption=""
num=Val(Text1.Text)
Fori=1Ton
Ifnum>x(i)Then
k=i
ExitFor
EndIf
Nexti
Printk
Ifi<=nThen
Fori=nTokStep-1
x(i+1)=x(i)
Nexti
Else
k=n+1
EndIf
x(k)=num
n=n+1
Fori=1Ton
Label7.Caption=Label7.Caption+Str(x(i))
Nexti
EndSub