部分上机题目及参考解法.docx
《部分上机题目及参考解法.docx》由会员分享,可在线阅读,更多相关《部分上机题目及参考解法.docx(19页珍藏版)》请在冰豆网上搜索。
![部分上机题目及参考解法.docx](https://file1.bdocx.com/fileroot1/2022-12/30/b4fd0fdd-2ef2-4e27-99cc-eb3b034ac254/b4fd0fdd-2ef2-4e27-99cc-eb3b034ac2541.gif)
部分上机题目及参考解法
部分上机题目及参考解法
2.2简单程序设计实验
1、
按钮事件过程对应的代码为:
PrivateSubButton1_Click()‘此处简写
TextBox1.Text="计算机科学与工程学院欢迎您!
"
EndSub
需要注意的是:
代码是在按钮的Click事件中写的,并非在其他事件中。
2、
“显示”按钮对应的事件过程为:
PrivateSubButton1_Click()‘此处简写
TextBox1.Text="锄禾日当午"&vbCrLf
TextBox1.Text&="汗滴禾下土"&vbCrLf
TextBox1.Text&="谁知..."
'这里考察的是回车换行符的用法
EndSub
“清除”按钮对应的事件过程为:
PrivateSubButton2_Click()‘此处简写
TextBox1.Text=""
'清空文本框的内容就是把文本框的内容赋值为空串
EndSub
“结束”按钮对应的事件过程为:
PrivateSubButton3_Click()‘此处简写
End
'强制结束程序
EndSub
2.3VB.NET基本语法实验
1、
“计算”按钮对应的事件过程为:
PrivateSubButton1_Click()‘此处简写
Dima,b,c,dAsSingle
a=Val(TextBox1.Text)'得到数量
b=Val(TextBox2.Text)'得到单价
c=Val(TextBox3.Text)'得到折扣
d=a*b*c'得到总价钱,即应付金额
TextBox4.Text=d'给应付金额文本框赋值
EndSub
“累计”按钮对应的事件过程为:
PrivateSubButton2_Click()‘此处简写
Dima,bAsSingle
a=Val(TextBox4.Text)'得到本次交易的应付金额
b=Val(TextBox5.Text)'得到以前交易所累计的金额
TextBox5.Text=a+b'将本次交易的金额也累计上去
EndSub
“清除”按钮对应的事件过程为:
PrivateSubButton3_Click()‘此处简写
TextBox1.Text=""'清空数量
TextBox2.Text=""'清空单价
TextBox3.Text=""'清空折扣
TextBox4.Text=""'清空应付金额
EndSub
2.4选择结构实验
1、
“纳税”按钮对应的事件过程为:
PrivateSubButton1_Click()‘此处简写
Dima,bAsSingle
a=(1500-800)*0.03'800--1500之间的总税金
b=(5000-1500)*0.05'1500-5000之间的总税金
Dimx,yAsSingle
x=Val(TextBox1.Text)'得到收入的值
Ifx>5000Then
y=(x-5000)*0.1+a+b'超过5000需要征3段税
ElseIfx>1500Then
y=(x-1500)*0.05+a'1500--5000需要征2段税
ElseIfx>800Then
y=(x-800)*0.03'800-1500需要征1段税
EndIf
TextBox2.Text=y'将税金输出到Textbox2
EndSub
3、
点击窗体后,要求输入学号、成绩,经程序处理后,结果如下:
那么在窗体单击事件中的代码如下:
PrivateSub成绩判定_Click()’窗体的名称已经改成“成绩判定”
DimxuehaoAsString
DimchengjiAsInteger
xuehao=InputBox("输入你的学号")
chengji=Val(InputBox("输入你的成绩"))
Ifchengji>100Orchengji<0Then
MsgBox("成绩输入有误")
ExitSub
EndIf
DimstrAsString
SelectCasechengji
CaseIs>=90
str="学号"&xuehao&",分数"&chengji&",优秀"
MsgBox(str)
CaseIs>=80
str="学号"&xuehao&",分数"&chengji&",良好"
MsgBox(str)
CaseIs>=70
str="学号"&xuehao&",分数"&chengji&",中等"
MsgBox(str)
CaseIs>=60
str="学号"&xuehao&",分数"&chengji&",及格"
MsgBox(str)
CaseElse
str="学号"&xuehao&",分数"&chengji&",不及格"
MsgBox(str)
EndSelect
EndSub
2.5循环结构实验
1、
“统计”按钮对应的事件过程为:
PrivateSubButton1_Click()‘此处简写
DimstrAsString
Dimi,cAsInteger
str=TextBox1.Text
Fori=1ToLen(str)
IfMid(str,i,1)="e"Then
c+=1
EndIf
Next
Label1.Text="字符串"&str&"中共含有"&c&"个e字符"
EndSub
2、
“人口增长”按钮对应的事件过程为:
PrivateSubButton1_Click()“此处简写
DimsumAsDouble
DimxAsInteger
sum=13
x=0
Whilesum<20
x+=1
sum=13*1.01^x
Loop
MsgBox(x&"年后我国人口将达到20亿")
EndSub
5、歌德巴赫猜想
“歌德巴赫猜想”按钮下面对应的代码为:
PrivateSubButton1_Click()’此处简写
Dimm,x,y,I,jAsInteger
DimstrAsString
m=Val(InputBox(""))
Forx=3Tom/2
Dimflag1AsBoolean
flag1=True
Fori=2Tox-1
IfxModi=0Then
flag1=False
ExitFor
EndIf
Next
Dimflag2AsBoolean
y=m-x
flag2=True
Fori=2Toy-1'判断y是否为素数
IfyModi=0Then
flag2=False
ExitFor
EndIf
Next
Ifflag1=TrueAndflag2=TrueThen
str&=m&"="&x&"+"&y&vbCrLf
EndIf
Next
MsgBox(str)
EndSub
6、使用函数的歌德巴赫猜想
FunctionIsPrime(ByValn%)AsBoolean
‘判断一个数n是否为素数,若是返回true,否则返回false
DimiAsInteger
Fori=2Ton-1
IfnModi=0Then
ReturnFalse
EndIf
Next
ReturnTrue
EndFunction
“歌德巴赫猜想”按钮下面对应的代码为:
PrivateSubButton1_Click()‘此处简写
Dimm,x1,x2AsInteger
m=Val(InputBox("输入一个大于等于6的偶数"))
Forx1=3Tom/2
x2=m-x1
IfIsPrime(x1)AndIsPrime(x2)Then
TextBox1.Text&=m&"="&x1&"+"&x2&vbCrLf
EndIf
Next
EndSub
注意:
我们自己设计的函数和按钮事件过程,在定义时是并列的关系。
6、菲波纳奇数列
(1)不使用过程
PrivateSubButton1_Click()
DimA(49)AsDouble
A(0)=0
A
(1)=1
DimiAsInteger
Fori=2To49
A(i)=A(i-1)+A(i-2)
Next
TextBox1.Text=""
Fori=1ToUBound(A)+1
DimcAsInteger
c=Len(A(i-1).ToString)
TextBox1.Text&=A(i-1)&Space(15-c)
IfiMod5=0Then
TextBox1.Text&=vbCrLf
EndIf
Next
EndSub
(2)使用过程
Subprint(ByValA#())
DimiAsInteger
Fori=1ToUBound(A)+1
DimcAsInteger
c=Len(A(i-1).ToString)
TextBox1.Text&=A(i-1)&Space(15-c)
IfiMod5=0Then
TextBox1.Text&=vbCrLf
EndIf
Next
EndSub
PrivateSubButton1_Click()
DimA(49)AsDouble
A(0)=0
A
(1)=1
DimiAsInteger
Fori=2To49
A(i)=A(i-1)+A(i-2)
Next
print(A)
EndSub
2.6数组的应用试验
1、数组操作
DimA()AsString={"北京","上海","广州","深圳"}
Dimi,jAsInteger
Label1.Text="第一组数据:
"&vbCrLf
Fori=0ToUBound(A)
Label1.Text&=A(i)&""
Next
Label1.Text&=vbCrLf
'DimB(4)Asstudent
'Fori=0ToUBound(B)
'B(i).name=InputBox("输入姓名")
'B(i).chinese=Val(InputBox("输入语文成绩"))
'B(i).math=Val(InputBox("输入数学成绩"))
'B(i).english=Val(InputBox("输入英语成绩"))
'B(i).total=B(i).chinese+B(i).math+B(i).english
'Next
'
'Label1.Text&="第二组数据:
"&vbCrLf
'Label1.Text&="姓名数学语文英语总分"&vbCrLf
'Fori=0ToUBound(B)
'Label1.Text&=B(i).name&""&B(i).math&""&B(i).chinese&""&B(i).english&""&B(i).total&vbCrLf
'Next
DimC(,)AsInteger={{12,26,-3,0},{26,34,-6,26},{0,-2,2,10},{4,2,3,9}}
Label1.Text&="第三组数据是:
"&vbCrLf
Fori=0ToUBound(C,1)
Forj=0ToUBound(C,2)
Label1.Text&=C(i,j)&""
Next
Label1.Text&=vbCrLf
Next
2.
DimC(,)AsInteger={{12,26,-3,0},{26,34,-6,26},{0,-2,2,10},{4,2,3,9}}
DimmaxAsInteger=C(0,0)
Dimx0,y0AsInteger
x0=0:
y0=0
Dimi,jAsInteger
Fori=0ToUBound(C,1)
Forj=0ToUBound(C,2)
IfC(i,j)>maxThen
max=C(i,j)
x0=i:
y0=j
EndIf
Next
Next
MsgBox("最大值为:
"&max&"位置:
"&x0&","&y0)
DimcountAsInteger
Fori=0ToUBound(C,1)
Forj=0ToUBound(C,2)
IfC(i,j)<0Then
count+=1
EndIf
Next
Next
MsgBox(count)
4.循环移位
(1)不使用函数
Dima(9)AsInteger
DimiAsInteger
Fori=0ToUBound(a)'用随机函数为数组赋值
a(i)=Int(Rnd()*90)+10
Next
DimstrAsString
Fori=0ToUBound(a)
str=str&a(i)&""
Next
MsgBox(str)
DimmAsInteger
m=Val(InputBox(""))
DimjAsInteger
Forj=1Tom'j控制次数
DimtAsInteger
t=a(0)
Fori=1ToUBound(a)
a(i-1)=a(i)
Next
a(UBound(a))=t
str=str&vbCrLf
Fori=0ToUBound(a)
str=str&a(i)&""
Next
Next
MsgBox(str)
(2)使用函数
SubMoveOne(ByValA%())
DimiAsInteger
DimcAsInteger
c=A(0)
Fori=1ToUBound(A)
A(i-1)=A(i)
Next
A(UBound(A))=c
EndSub
Subprint(ByValA%())
DimiAsInteger
Fori=0ToUBound(A)
Label1.Text&=A(i)&""
Next
Label1.Text&=vbCrLf
EndSub
PrivateSub成绩判定_Click()
DimA()AsInteger={25,81,-2,26,45,52}
DimiAsInteger
Label1.Text="没有移动前"&vbCrLf
print(A)
Fori=1To4
MoveOne(A)
print(A)
Next
EndSub
///////////////////////////
6.杨辉三角
PrivateSubButton6_Click()
Dima(8,8)AsInteger
Dimi,jAsInteger
Fori=0ToUBound(a,1)
a(i,0)=1
a(i,i)=1
Next
Fori=1ToUBound(a,1)
Forj=1Toi-1
a(i,j)=a(i-1,j-1)+a(i-1,j)
Next
Next
DimstrAsString
Fori=0ToUBound(a,1)
Forj=0Toi
str&=a(i,j)&Space(5-a(i,j).ToString.Length)
Next
str&=vbCrLf
Next
MsgBox(str)
EndSub
2.7排序试验
1.
PrivateSubButton1_Click()
Dima(9)AsInteger
Dimi,j,upAsInteger
up=UBound(a)
Fori=0Toup
a(i)=Int(Rnd()*51)+50
Next
DimstrAsString
print(str,a)
Fori=0ToUBound(a)-1
DimminAsInteger
min=i
Forj=i+1ToUBound(a)
Ifa(j)min=j
EndIf
Next
DimtAsInteger
t=a(i):
a(i)=a(min):
a(min)=t
Next
print(str,a)
MsgBox(str)
EndSub
2.9过程调用中的参数传递试验
2.
Functionfactor(ByValnAsInteger)AsLong
DimiAsInteger
DimfAsLong=1
Fori=1Ton
f=f*i
Next
Returnf
EndFunction
PrivateSubButton2_Click()
DimmAsInteger=Val(TextBox1.Text)
DimnAsInteger=Val(TextBox2.Text)
TextBox3.Text=factor(n)/factor(m)/factor(n-m)
EndSub
下面是一些递归函数
1.求n!
Functionf(ByValn%)AsInteger
Ifn=1ThenReturn1
Returnn*f(n-1)
EndFunction
Functiong(ByValm%,ByValn%)AsInteger
IfmModn=0ThenReturnn
Returng(n,mModn)
EndFunction
2.菲波纳奇数列
Functionfib#(ByValn#)
Ifn=1ThenReturn0
Ifn=2ThenReturn1
Ifn>=3ThenReturnfib(n-1)+fib(n-2)
EndFunction
3.求数组中的最大值
Functionmax%(ByValA%())
Dimt,iAsInteger
t=A(0)
Fori=1ToUBound(A)
IfA(i)>tThent=A(i)
Next
Returnt
EndFunction
Functionmax1%(ByValA%(),ByValm%,ByValn%)
Ifm=nThenReturnA(m)
DimtAsInteger
t=max1(A,m+1,n)
IfA(m)>tThen
ReturnA(m)
Else
Returnt
EndIf
EndFunction