1、8. 验证下列命题:设n是一个s1是n的各位数字之和,s2是2n的各位数字之和。若s1=s2,则n是9的倍数。根据图2和程序填写对象的相关属性,"X"代表该对象无属性。 对象 名称(Name) 标题(Caption) 正文(Text) 窗体 Frm1 (验证命题) X 标签 LblInput (输入一个两位数) X 文本框 TxtInput X 空 判断按钮 (CmdVerify) 验证 X 退出按钮 CmdExit 退出 X Private Sub CmdVerify_Click() Dim n As Integer,s1 As Int
2、eger,sa As Integer n=Val__(TxtInput_) s1=Sm(n) s2=Sm(2*n) If ___(s1=s2 and n Mod 9=0)___Then MsgBox "该命题成立" Else MsgBox "该命题不成立" End If TxtInput.Text="" TxtInput.SetFocus End Sub Private Sub CmdExit_Click() Unload Me End Sub Private Function Sm(___(ByVal n As Integer)___) As Integ
3、er Dim sm1 as integer sm1=0 Do While n<>0 sm1=sm1+n Mod 10 ___(n=n\10)___ Loop Sm=sm1 End Function 8. 下面程序的功能是验证回文数猜想。任取一自然数,将其倒过来,并将这两个数相加,然后把这个和数倒过来,与原来的和数相加……重复这个过程有限次,必将得到一个回文数。 所谓回文数指左右数字完全对称的自然数,例如,121,12321,898,111均是回文数。根据猜想,假如取一自然数6868+86=154154+451=605605+506=1111,经过三步运算就得到回文
4、数1111。 Option Explicit Private Sub Form_Click() Dim S As Long,D As Long,Sum As Long Dim Flg As Boolean S=InputBox("输入一个正整数") Do D=Fun(S) Sum =S+D Print Sum;"=";S;"+";D Call Comp(Sum,Flg) S=___(Sum)___ Loop Until Flg Print Sum;"是回文数" End Sub Private Function Fun(N As Long)As Long
5、Dim Char As String,J As Long Dim I As Integer,Slen As Integer Char=Ltrim(Str(N)) ___(Slen=Len(Char))___ J=1 For I=1 To Slen Fun=Fun+Val(Mid(Char,I,1))*J ___(J=J*10或J=10^i)___ Next I End Function Private Sub Comp(N As Long,F As Boolean) Dim Ch As String,S As Integer,I As Integer S=Len(Lt
6、rim(Str(N))) F=False Ch=Ltrim(Str(N)) For I=1 To___(S)___ If Mid(Ch,I,1)<>Mid(CH,S+1-I,1)Then Exit Sub Next I ___(F=True)___ End Sub 9.下面程序的功能是从键盘上输入一个不超过4位的十进制正整数,先把该十进数的每一位数字转换位一个4位二进制数,再把得到的二进制数依次合并成为一个16位的二进制数。例如输入十进制数359,会得到二进制数0000001101011001。 Private Sub Form_Click() Dim num As Int
7、eger, s As String, M As Integer Dim i As Integer, j As Integer, n As Integer num = InputBox("输入一个长度不超过4位的十进制正整数:", , 1) ___M=num__ Do While num>0 j=j + 1 n=num Mod 10 s=cover(n) & s ___num=num\10__ Loop For i=1 To 4-j s="0000" & s Next i Text1.Text="十进制数"&CStr(M)&"的转换结果是:" & s End Sub
8、 Private Function cover(ByVal n As Integer)As String Dim i As Integer, s As String, k As Integer Do Until n<1 ___k=n Mod 2__ s=CStr(k) & s n=n\2 Loop If Len(s)< 4 Then s="0000" & S cover=__right(s,4)__ Else cover=s End If End Function 7.下面程序的功能是将以“12;3;15”形式输入的字符串分解为数字12、3、15,分别赋给3个
9、数组元素,并对其进行简单运算(图2为本程序执行画面)。 Private Sub Command1_Click() Dim a(3) As Integer, i As Integer, n As Integer Dim s As String s = Text1.Text For i = 1 To 2 n = InStr(s, ";") a(i) = Left(s, n - 1) s = Mid(s, n + 1, Len(s) - n) Next i A(3)= Val( s ) Text2.Text = a(1) * a(2) + a(3
10、 End Sub 图2 8.本程序是找零巧数。所谓零巧数是具有下述特性的四位正整数:其百位数为0,如果去掉0,得到一个三位正整数,而该正整数乘以9,等于原数。例如2025=225×9,所以2025是零巧数(如图3所示)。 图3 Private Function Change(s As String) As String Dim p As String, i As Integer For i = 1 To Len(s) If i <> 2 Then '是否为左边第二位数 p = p + Mid(s, i, 1) '将每位字符串连接 End If
11、Next i Change = p End Function Private Sub Command1_Click() Dim i As Integer, s As String For i = 1000 To 9999 '在四位数之间查找 s = CStr(i) '将数值转变成字符串 If Mid(s, 2, 1) = "0" Then '取百位数,并判断是否为"0" If Val(Change(s)) * 9 = i Then '去掉百位数后的数乘9后是否等于原来的数 List1.AddItem CStr(i)+ "=" +Ch
12、ange(s)+ "*9" '连接成字符串后,添加到列表框内 End If End If Next i End Sub 9.本程序是把给定的二进制整数转换为八进制整数。 Private Sub Command1_Click() Dim a As String, b As String, c As String a = InputBox("请输入一个二进制数", "输入框") L = 3 -( Len(a))Mod 3 a = String(L, "0") & a n = Len(a)/ 3 For m = 1 To n b =
13、Mid(a, 3 * m - 2, 3) c = c + zh(b) Next m Text1.Text = c End Sub Private Function zh(s As String) As String Dim i As Integer, n As Integer, p As Integer p = 1 For i = 2 To 0 Step -1 n = n * 2 + Val(Mid(s, p, 1)) p = p + 1 Next i zh = Str(n) End Function 10.找出由两个不同数字组成的平
14、方数,并将结果按图4中的格式显示在列表框List1中。 Option Explicit Private Sub Command1_Click() Dim I As Long, N As Long For I = 11 To 300 N = I * I If Verify(N) Then List1.AddItem Str(I*I)+ "="+ Str(I)+ "*" + Str(I) End If Next I End Sub Private Function Verify(N As Long) As Boolean Dim A(0 To
15、 9) As Integer, I As Integer, J As Integcr Do While N <> 0 A(N Mod 10)= 1 N = N \ 10 Loop For I = 0 To 9 Js = Js + A(I) Next I If Js = 2 Then Verify = True End Function 图4 2.运行下面的程序,当单击窗体时,文本框Text1中的内容是 (2) ,文本框Text2中的内容是 (3) 。 Private Sub Form_Click() Dim St As String
16、 Dim St1 As String, St2 As String St = "ASFRSDCFRSKX" Call Change_String(St, St1, St2) Text1.Text = St1 Text2.Text = St2 End Sub Private Sub Change_String(S As String, St1 As String, St2 As String) Dim tem As String, i As Integer For i = 1 To Len(S) tem = Mid(S, i, 1) If tem = "S
17、" Then St2 = St2 & "at" ElseIf tem = "R" Then St1 = St1 & "T" Exit For Else St1 = St1 & tem St2 = St2 & tem End If Next i End Sub (2)AFT (3)AatF 分析:Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符。过程Change_String的功能是,将字符串St中的“S” 置换为“at”,“R”置换为“T”,并退出For循环。 6.运行下面程序,单击命令按钮Co
18、mmand1,则在窗体上显示的第一行内容是 (13) ,第二行内容是 (14) ,文本框Text1中显示的内容是 (15) 。 Private Sub Command1_Click() Dim S As String S = "LAUSIV" Text1.Text = Display(S, Len(S)) End Sub Private Function Display(S As String, L As Integer) As String If L > 1 Then Display = Display(S, L - 1) S = Left(S, L - 1) &
19、Right(S, 1) & Mid(S, L, Len(S) - L) Display = S Print Display End Function S L 打印 层数 LAUSIV 6 一 LAUSIV 5 二 LAUSIV 4 三 LAUSIV 3 四 LAUSIV 2 五 LAUSIV 1 Left(S, 0) & Right(S, 1) & Mid(S, 1, 5) VLAUSI 六 VLAUSI 2 Left(S, 1) & Right(S, 1) & Mid(S, 1, 4) VILA
20、US 五 VILAUS 3 Left(S, 2) & Right(S, 1) & Mid(S, 1, 3) VISLAU 四 VISLAU 4 Left(S, 3) & Right(S, 1) & Mid(S, 1, 2) VISULA 三 VISULA 5 Left(S, 4) & Right(S, 1) & Mid(S, 1, 1) VISUAL 二 VISUAL 6 Left(S, 5) & Right(S, 1) & Mid(S, 1, 0) VISUAL 一 (13)VLAUSI (14)VILAUS (15)VISUAL 分析:过程Display是个递归过程。Left(x,n)从x字符串左边起取n个字符,Right(x,n)从x字符串右边起取n个字符,Mid(x,n1,n1)从x字符串左边第n1个位置开始向右起取以个字符,Len(x)求x字符串的长度(字符个数)。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818