Text4.Text=y
Text5.Text=z
Text6.Text=x
Else
Text4.Text=y
Text5.Text=x
Text6.Text=z
EndIf
EndIf
EndIf
EndSub
PrivateSubForm_Load()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
EndSub
10.
OptionExplicit
PrivateSubCommand1_Click()
Dimx%,y%,m%
x=Val(Text1.Text)
y=Val(Text2.Text)
m=xMody
DoWhilem<>0
x=y
y=m
m=xMody
Loop
Text3.Text=y
EndSub
PrivateSubForm_Load()
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndSub
习题四
一、选择题
1.B2.C3.D4.A5.D
6.C7.D8.B
二、填空题
1.b(i)=a(i-1)+a(i)print
2.Variant
3.M=lbound(a,2)tonnexti
4.20
5.从大到小排序(这是一种比较好的插入排序法,希望同学们能够掌握)
6.Preserve
7.A(k)=min
8.空的变体型
9.J=ubound(a,2)flag=false:
exitfor
10.Dimaa(9,4)asinteger
三、简答题(略)
四、编程题
1.
OptionExplicit
PrivateSubCommand1_Click()
DimzfcAsString,zmAsString,i%,lenth%,n%
zfc=InputBox("pleaseinputstring:
","info","youaregoodstudent")
lenth=Len(zfc)
n=0
Fori=1Tolenth
zm=Mid(zfc,i,1)‘取每一个字母
IfUCase(zm)="A"OrUCase(zm)="E"OrUCase(zm)="O"OrUCase(zm)="I"Or_UCase(zm)="U"Then
n=n+1
EndIf
Next
MsgBox"该字符串的元音字母个数是"&n&"个"
EndSub
2.’这道题题目有问题,应改为“与其转置矩阵相加”
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dimaa(3,3)AsInteger,bb(3,3)AsInteger,cc(3,3)AsInteger
Dimi%,j%
Fori=1To3
Forj=1To3
aa(i,j)=Rnd*100‘我假设为100以内的任意整数
Next
Next
Calldisp(aa)‘调用函数,显示aa数组的内容
Fori=1To3
Forj=1To3
bb(j,i)=aa(i,j)
Next
Next
Calldisp(bb)‘调用函数,显示bb数组的内容
Fori=1To3
Forj=1To3
cc(i,j)=aa(i,j)+bb(i,j)
Next
Next
Calldisp(cc)‘调用函数,显示cc数组的内容
EndSub
PrivateSubForm_Load()
Randomize
EndSub
Subdisp(sz()AsInteger)‘专门编写一个显示数组的函数,希望同学们在题目中经常使用
Dimi%,j%
Fori=1To3
Forj=1To3
Printsz(i,j);
Next
Print
Next
EndSub
3.’这道题题目有问题,应改为“2,16任意进制的数值”
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dimx%
Form1.Cls‘清除窗体
x=Val(InputBox("pleaseinputdata:
","info",20))
Callejz(x)‘调用函数求解二进制
Print‘换行
Callsljz(x)‘调用函数求解十六进制
EndSub
Subejz(ByValmAsInteger)
Dimaa(30)AsInteger,i%,j%
i=1
DoWhilem\2<>0
aa(i)=mMod2
m=m\2
i=i+1
Loop
aa(i)=mMod2
Print"转换后的二进制数是:
";
Forj=iTo1Step-1
Printaa(j);
Next
EndSub
Subsljz(ByValmAsInteger)‘注意十六进制数码的特殊性
Dimaa(30)AsString,i%,j%
i=1
DoWhilem\16<>0
SelectCasemMod16‘想一想,为什么要这样转换
Case10
aa(i)="A"
Case11
aa(i)="B"
Case12
aa(i)="C"
Case13
aa(i)="D"
Case14
aa(i)="E"
Case15
aa(i)="F"
CaseElse
aa(i)=CStr(mMod16)
EndSelect
m=m\16
i=i+1
Loop
SelectCasemMod16
Case10
aa(i)="A"
Case11
aa(i)="B"
Case12
aa(i)="C"
Case13
aa(i)="D"
Case14
aa(i)="E"
Case15
aa(i)="F"
CaseElse
aa(i)=CStr(mMod16)
EndSelect
Print"转换后的十六进制数是:
";
Forj=iTo1Step-1
Printaa(j);
Next
EndSub
‘这道题,请同学们认真思考,学会其它各种进制转换的算法。
4.本道题我给出两种方法,希望同学们通过该题目,熟悉函数的运用。
方法一:
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dimi%,str1AsString,str()AsString,str2AsString,lengthAsInteger
str1=InputBox("请输入第一个字符串:
","info","exam")
length=Len(str1)
ReDimstr(length)‘重新调整数组大小,目的是为排序起作用
Fori=1Tolength
str(i)=Mid(str1,i,1)‘给该数组赋值,换句话说,让第一个字符串放入数组中
Next
Callsort(str,length)‘调用函数对第一个字符串排序
Print"第一个字符串排序后的结果:
"
Calldisp(str,length)‘调用函数显示第一个字符串排序后的结果
str2=InputBox("请输入第二个字符串:
","info","good")
str1=str1+str2
length=Len(str1)+Len(str2)
ReDimstr(length)‘重新调整数组大小,目的是为插入后字符串排序起作用
Fori=1Tolength
str(i)=Mid(str1,i,1)‘让第一个字符串和第二个字符串放入数组中
Next
Callsort(str,length)‘调用函数对插入后字符串排序
Print"插入第二个字符串后排序后的结果:
"
Calldisp(str,length)‘调用函数显示插入后字符串排序后的结果
EndSub
Subsort(str()AsString,lengthAsInteger)
Dimi%,j%,tAsString
Fori=1Tolength-1
Forj=i+1Tolength
Ifstr(i)>str(j)Then
t=str(i)
str(i)=str(j)
str(j)=t
EndIf
Next
Next
EndSub
Subdisp(str()AsString,lengthAsInteger)
Dimi%
Fori=1Tolength
Printstr(i);
Next
Print
EndSub
方法二:
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dimi%,str1AsString,str()AsString,str2AsString,strinsert()AsString,lengthAsInteger
Form1.Cls
str1=InputBox("请输入第一个字符串:
","info","exam")
length=Len(str1)
ReDimstr(length)
Fori=1Tolength
str(i)=Mid(str1,i,1)
Next
Callsort(str,length)
Print"第一个字符串排序后的结果:
"
Calldisp(str,length)
str2=InputBox("请输入第二个字符串:
","info","good")
length=Len(str1)+Len(str2)+1
ReDimstrinsert(length)
Fori=1ToLen(str1)
strinsert(i)=str(i)
Next
Fori=1ToLen(str2)
Callinsert(strinsert,Mid(str2,i,1),Len(str1)+i)‘调用函数,逐个字符插入
Next
Print"插入第二个字符串后排序后的结果:
"
Calldisp(strinsert,length-1)
EndSub
Subsort(str()AsString,lengthAsInteger)
Dimi%,j%,tAsString
Fori=1Tolength-1
Forj=i+1Tolength
Ifstr(i)>str(j)Then
t=str(i)
str(i)=str(j)
str(j)=t
EndIf
Next
Next
EndSub
Subdisp(str()AsString,lengthAsInteger)
Dimi%
Fori=1Tolength
Printstr(i);
Next
Print
EndSub
Subinsert(str()AsString,zmAsString,length%)
Dimi%,j%