实验指导书部分参考答案.docx
《实验指导书部分参考答案.docx》由会员分享,可在线阅读,更多相关《实验指导书部分参考答案.docx(11页珍藏版)》请在冰豆网上搜索。
![实验指导书部分参考答案.docx](https://file1.bdocx.com/fileroot1/2023-1/3/20d11e14-06ca-4e3c-a0e1-ca6367a582bf/20d11e14-06ca-4e3c-a0e1-ca6367a582bf1.gif)
实验指导书部分参考答案
实验四:
4.1法一:
PrivateSubForm_Click()
X%=Asc(InputBox("请输入你要查询的一个字符","单个字符输入",""))
DimmAsSingle,nAsSingle,jAsSingle,kAsSingle,lAsSingle,hAsSingle
m=Asc("0")
n=Asc("9")
j=Asc("a")
k=Asc("z")
l=Asc("A")
h=Asc("Z")
Ifm<=xAndx<=nTheni=MsgBox("您输入的字符是数字")
Ifj<=xAndx<=kTheni=MsgBox("您输入的字符是小写字母")
Ifl<=xAndx<=hTheni=MsgBox("您输入的字符是大写字母")
EndSub
法二:
PrivateSubForm_Click()
Dimchar$
char=(InputBox("请输入你要查询的一个字符","单个字符输入",""))
selectcaseasc(char)
caseasc(“0”)toasc(“9”)
MsgBox"您输入的字符是数字"
caseasc(“A”)toasc(“Z”)
MsgBox"您输入的字符是大写字母"
caseasc(“a)toasc(“z”)
MsgBox"您输入的字符是小写字母"
Caseelse
MsgBox"您输入的字符是其它字母"
Endselect
EndSub
4.2
法一:
PrivateSubForm_Click()
DimaAsDouble,bAsDouble,cAsDouble,dAsDouble
a=Val(InputBox("请输入a的数值","数值A",""))
b=Val(InputBox("请输入b的数值","数值B",""))
c=Val(InputBox("请输入c的数值","数值C",""))
d=Val(InputBox("请输入d的数值","数值D",""))
Ifa>bAnda>cAnda>dTheni=MsgBox("a是最大值")
Ifb>aAndb>cAndb>dTheni=MsgBox("b是最大值")
Ifc>aAndc>bAndc>dTheni=MsgBox("c是最大值")
Ifd>aAndd>bAndd>cTheni=MsgBox("d是最大值")
EndSub
法二:
PrivateSubForm_Click()
DimaAsDouble,bAsDouble,cAsDouble,dAsDouble,max#
a=Val(InputBox("请输入a的数值","数值A",""))
b=Val(InputBox("请输入b的数值","数值B",""))
c=Val(InputBox("请输入c的数值","数值C",""))
d=Val(InputBox("请输入d的数值","数值D",""))
Ifa>bThenmax=aelsemax=b
Ifc>maxThenmax=c
Ifd>maxThenmax=d
Print“四个数中的最大值是:
”;max
EndSub
4.3PrivateSubform1_Click()
Dima!
b!
c!
s!
p!
a=Val(InputBox("请输入第一个边长的长度"))
b=Val(InputBox("请输入第二个边长的长度"))
c=Val(InputBox("请输入第三个边长的长度"))
Ifa0Andb>0Andc>0Then
p=(a+b+c)/2
s=Sqr(p*(p-a)*(p-b)*(p-c))
MsgBox"三角形的面积为:
"&s,0+64+0+0,"您输入的边长可以构成三角"Else
MsgBox("您输入的数据无法正常构成三角形!
",5+48+0+0,"警告!
"
EndIf
EndSub
4.4PrivateSubform1_Click()
DimxAsDouble,YAsDouble
x=Val(Text1.Text)‘或者x=val(inputbox(“请输入货物的价格”))
Ifx>=10000Then
Y=x*0.05
ElseIfx>=5000[Andx<10000]Then
Y=x*0.03
ElseIf1000<=x[Andx<5000]Then
Y=x*0.02
ElseIfx<1000Then
Y=0
Endif
MsgBox"你输入的价格”&x&“应该缴纳的税金为:
"&y
Endsub
4.5-4.7略
实验五:
5.1PrivateSubForm_Click()
Dimt#,n%,m%
m=Val(InputBox("请输入m:
"))
t=1
Forn=1Tom
t=t*n
Next
Print"t=";t
EndSub
5.2PrivateSubForm_Click()
Dimi%,sum#
i=1
sum=0
DoWhilesum<=6000
sum=sum+i
i=i+1
Loop
Print“当i为”&I&“时,其累加和超过6000”
EndSub
5.3PrivateSubForm_Click()
DimaAsInteger,bAsInteger,cAsInteger,xAsInteger
Forx=100To999
‘把每个三位数X的个位、十位、百位数字拆开
a=Int(x/100)
b=Int((x-100*a)/10)
c=x-100*a-10*b
Ifx=a^3+b^3+c^3ThenPrintx&“是水仙花数”
Nextx
EndSub
5.4
PrivateSubForm_Click()
DimnAsInteger
Forn=100To200
IfnMod3=2AndnMod5=3AndnMod7=2ThenPrintn
Nextn
EndSub
5.5略
5.6略
5.7
法一:
PrivateSubForm_Click()
Dims%,i%,n%,sum#
n=Val(InputBox("n="))或者n=Val(Text1.Text)
sum=0
Forj=1Ton
s=0
Fori=1Toj
s=s+i
Nexti
sum=sum+s
Nextj
Printsum
EndSub
法二:
PrivateSubForm_Click()
Dims%,i%,n%,sum#
n=Val(InputBox("n="))或者n=Val(Text1.Text)
sum=0
Forj=1Ton
Fori=1Toj
sum=sum+i
NextiNextj
Printsum
EndSub
5.8PrivateSubForm_Click()
Dimi%,j%,n%
Cls
n=InputBox("请输入行数:
")
Fori=1Ton
PrintTab(20);
Forj=1Toi
Print"*";
Nextj
Print
Nexti
EndSub
5.9法一:
PrivateSubForm_Click()
Dimi%
Fori=1To10
PrintSpace(i+15)+String(21-2*i,Trim(Str(10-i)))
Nexti
EndSub
法二:
PrivateSubForm_Click()
Dimi%,j%,k%
Fori=9To0step-1
‘输出每一行行首的空格
Fork=1to15-i
Print“”;‘一次输出一个空格,每行共输出15-i个
Nextk
‘输出每一行上的数字
Forj=1to2*i+1
Printtrim(str(i);‘一次输出一个数字,共输出2*i+1个
Nextj
print‘换行
Nexti
EndSub
实验六:
6.1
PrivateSubForm_Click()
Dima(1To10)AsInteger,max%,min%,aver%,i%
max=20‘假设最大值是20
min=50‘假设最小值是50
Fori=1To10
a(i)=Int(Rnd*31+20)
Printa(i);‘每得到一个数组元素就输出一个
IfmaxIfmin>a(i)Thenmin=a(i)
aver=aver+a(i)‘求出10个数组元素的总和
Next
x=x/10‘求得10个数的平均值
Print'换行
Printmax;min;aver
EndSub
6.2PrivateSubForm_Click()
'准备数据
Dima(1To10)AsInteger,i%,j%,f%
Print"排序前数据:
"
Fori=1To10
a(i)=Int(Rnd*101)
Printa(i);'数据输出不换行
Next
Print'换行
Fori=1To10-1
f=0'没有数据交换发生
Forj=1To10-i
Ifa(j)>a(j+1)Then
t=a(j)
a(j)=a(j+1)
a(j+1)=t
f=1'有数据交换发生
EndIf
Next
Iff=0ThenExitFor
Next
Print"排序后数据:
"
Fori=1To10
Printa(i);
Next
EndSub
6.3略
6.4
PrivateSubForm_Click()
Dima%(1To3,1To3)
'声明一个3X3的矩阵
'输入矩阵A的六个元素,并输出为矩阵样式
Print"转置前矩阵"
Fori=1To2
Forj=1To3
a(i,j)=Val(InputBox("请输入第"&Str(i)&"行、第"&Str(j)&"列的元素"))
Printa(i,j);
Nextj
Print
Nexti
'矩阵转置,要求两个下标都要从1变到3
Fori=1To3
Forj=1To3
Ifit=a(i,j)
a(i,j)=a(j,i)
a(j,i)=t
EndIf
Nextj
Nexti
'输出转置后的举证,只访问矩数组的前两列,形成矩阵B
Print"转置后矩阵"
Fori=1To3
Forj=1To2
Printa(i,j);
Nextj
Print
Nexti
EndSub
6.5
PrivateSubForm_Click()
Dima(1To3,1To4)AsInteger,max%,hangd%,lied%,min%,hangx%,liex%
'声明一个3X4的矩阵
'输入矩阵A的元素,并输出为矩阵样式
Print"矩阵"
Fori=1To3
Forj=1To4
a(i,j)=Val(InputBox("请输入第"&Str(i)&"行、第"&Str(j)&"列的元素"))
Printa(i,j);
Nextj
Print
Nexti
'查找最值及所在行列号
'先假设第一个元素即是最大值
max=a(1,1)
hangd=1
lied=1
'先假设第一个元素也是最小值
min=a(1,1)
hangx=1
liex=1
'用矩阵中剩下的元素跟最值做比较
Fori=1To3
Forj=1To4
Ifa(i,j)>maxThen
max=a(i,j)
hangd=i
lied=j
EndIf
Ifa(i,j)min=a(i,j)
hangx=i
liex=j
EndIf
Nextj
Nexti
Print"矩阵中最大值是第"&Str(hangd)&"行、第"&Str(lied)&"列的元素"&max
Print"矩阵中最小值是第"&Str(hangx)&"行、第"&Str(liex)&"列的元素"&min
EndSub
6.6参考课本例题P109页例6.3
试验八
8.4
Dimx%'记忆密码尝试的次数,
'变量声明在通用过程里,本窗体的所有过程都能访问
'x变量在通用过程里声明,只会被初始化一次(即dim语句给x赋一次0)
Constzqmm="123456"'假设正确密码为“123456”
PrivateSubcommand1_Click()
Dimmm$
Ifx<3Then
mm=Text1.Text
Ifmm=zqmmThen
MsgBox"恭喜你,密码正确"
'如果是应用程序,就该进入下级操作界面
Else
x=x+1
MsgBox"密码错误,您还有"&3-x&"次机会"
Text1.Text=""
Text1.SetFocus
EndIf
EndIf
EndSub
PrivateSubcommand2_Click()
End
EndSub