VB 课后习题答案二、选择题1. C2. B第2章 习题参考答案一、判断题二、填空题1. 窗体font2. 不能在代码中设置 3.selstart 4.Locked5. TabIndex 、0 6.vbModal 或 17. Activate 、 Deactivate8. PictureBox 和Frame -三、选择题第3章 习题参考答案一、思考题1、double2、 xyC@abc , 15eyd , Is , #ENDX8[P]3、变量有 (1) (4) (6) (8),常量有 (2)字符串型 (3)逻辑型 (5)字符串型 (7)字符串型 (9)日期型 (10)实型 4、 fd cb a++5、 (1) 26 (2) 3.75 (3) 36、写出下列Visual Basic 表达式的值:(1) False (2) True (3) True (4) False(5) True (6) True (7) False (8) False7、将下列命题用Visual Basic 布尔表达式表示:(1) z>x and z>y(2) abs(a)<=abs(b+2) or a>b+2(3) p mod q=0 (4) x<-5 or x>-2 and x<2 or x>5(5) x<z and y>z or x>z and y<z (6) a<b and a mod 2=08、写出下列函数的值:(1) -4 (2) 换行符(3) –3 (4) -1 (5) hello(6) ello (7) 16 (8) “-459.65”(9) 5二、填空题1.整型、长整型、双精度型、双精度型2.(X mod 10)*10+X\103.sin(1/4*3.14)+sqr(x+2*exp(y))/abs(x-y)4.(a+b)/(c*d-sqr(1-a^2))5.x mod 5=0 or x mod 9=06.False7.-3 、 2 、-2 、 28.CDEF9.x>0 and y>0 or x<0 and y<0 或x*y>010.s>=”A” and s<=”Z” or s>=”a” and s<=”z”三、选择题四、编程题1、Private Sub Form_Click()Dim x%, Ten%, hundred%x = Val(Text1.Text)Ten = (x \ 10) Mod 10hundred = x \ 100Print "百位数是: " & hundredPrint "十位数是: " & TenEnd Sub2Private Sub Form_Click()Dim char As String * 1Form1.CurrentX = Rnd * Form1.ScaleWidthForm1.CurrentY = Rnd * Form1.ScaleHeightchar = Chr(Int(Rnd * 16) + 65)Print charEnd Sub第4章习题参考答案一、判断题二、选择题三、程序阅读写出下列各段程序执行后的输出结果。
1.785786357864135786422.w=4、w=13、w=135、w=313.此题有点错误,修改如下:是将语句“If k < Asc("A") Then k = k + 26”改为:If k < Asc("A") Or k > Asc("Z") And k < Asc("a") Then k = k + 26 改后的答案:xyza12 uvw&4.ABBBCCCCCDDDDDDDEEEEEEEEE5.此题的“IF KeyAsci=13 Then”改为“IF KeyAsci i=13 Then”答案是:129四、程序填空题1. (1) Sing=-1(2) For i=2 to 19(3) Sing=-Sing2.(1) Len(oldsen)(2) Mid(oldsen ,i,1)(3) Ucase(char)(4) char3.(1) Len(str1)(2) Length-1(3) Mid(str1,i,2)(4) Sum=04.(1)Trim(Str(i))(2)Trim(Str(i*i))(3)Right(x2,Len(x1))=x15.(1) last_one = last_two(2) last_two = this_one(3) i = i+1(4) i-1五、编程题1.Private Sub Form_Click()Dim R1 As Double, R2 As Double 'R1,R2 表示两电阻值Dim Rp As Double, Rs As DoubleR1 = Val(InputBox("输入电阻R1=?"))R2 = Val(InputBox("输入电阻R2=?"))Rp = R1 * R2 / (R1 + R2)Rs = R1 + R2Rp = Fix(Rp * 1000 + 0.5) / 1000 '保留小数点后3位Rs = Fix(Rs * 1000 + 0.5) / 1000 '保留小数点后3位MsgBox "并联电阻是:" & Rp & vbCrLf & "串联电阻是:" & Rs End Sub2.Private Sub Form_Click()Dim N As LongN = Val(InputBox("请输入年份", "提示框"))If (N Mod 400 = 0) Or (N Mod 4 = 0 And N Mod 100 <> 0) Then '判断条件Print N & "年是闰年"ElsePrint N & "年不是闰年"End IfEnd Sub3.Private Sub Form_Click()Dim a!, b!, c!, s!, x!a = Val(InputBox("Enter A=?"))b = Val(InputBox("Enter B=?"))c = Val(InputBox("Enter C=?"))If a + b > c And b + c > a And a + c > b Then '如果能构成三角形x = (a + b + c) / 2s = Sqr(x * (x - a) * (x - b) * (x - c))Print "S="; sElsePrint "数据有错,不能构成三角形"End IfEnd Sub4.(此题不适合使用Select语句)Private Sub Command1_Click()Dim x As Double, fx As Doublex = Val(InputBox("输入x=?"))If x < 0 And x <> -3 Thenfx = x * x + x - 6ElseIf x >= 0 And x < 10 And x <> 2 And x <> 3 Thenfx = x * x - 5 * x + 6Elsefx = x * x - x - 1End IfPrint "x= "; x; " f(" & x & ")="; fxEnd Sub5.Dim i As IntegerDim s As Long, t As Longt = 1For i = 1 To 10t = t * is = s + tNext iPrint " S=" & s6.Dim i%, s!, n!, t!, f%i = 1 '项数s = 0 '累加和n = 1 '阶乘t = 1 '通项f = 1 '系数Do While t > 0.000001s = s + f * ti = i + 1n = n * it = 1 / nf = -f '表示符号LoopPrint "S="; s7.'方法一Private Sub Form_Click()Dim i As IntegerDim Hundred As Integer, Ten As Integer, One As Integer '定义百位,十位,个位数For i = 100 To 999Hundred = i \ 100 '求百位数Ten = (i \ 10) - Hundred * 10 '求十位数One = i Mod 10 '求个位数If i = Hundred ^ 3 + Ten ^ 3 + One ^ 3 Then '判断是否为素数Print i & "是水仙花数"End IfNext iEnd Sub'方法二Private Sub Form_Click()Dim i As IntegerDim Hundred As Integer, Ten As Integer, One As Integer '定义百位,十位,个位数For Hundred = 1 To 9 '百位数For Ten = 0 To 9 '十位数For One = 0 To 9i = Hundred * 100 + Ten * 10 + OneIf i = Hundred ^ 3 + Ten ^ 3 + One ^ 3 Then '判断是否为素数Print i & "是水仙花数"End IfNext OneNext TenNext HundredEnd Sub8.Dim a As Double, x0 As Double, x1 As Doublea = Val(InputBox(“输入a=?”)x0 = a ' 初值x1 = 2 / 3 * x0 + a / (3 * x0 * x0) ' 第一次迭代后的值Do While Abs(x1 - x0) > 0.000001 ' 控制精度x0 = x1 ' 迭代x1 = 2 / 3 * x0 + a / (3 * x0 * x0)LoopPrint “立方根: ”; x1第5章习题参考答案一、判断题二、选择题三、程序填空1. Preserve a(n+1)a(i+1)=a(i)a(i+1)=m n+1或Ubound(a)2. PrintK-1t = a(k, j): a(k, j) = a(j, k): a(j, k) = t3.Rnd*100P=10P = JP = 0四、编写程序1.Private Sub Command1_Click()Dim A() As Integer, N As IntegerDim i As Integer, M As Integer, t As Integer, k As IntegerN = Val(InputBox("请输入数组的大小N=?"))M = Val(InputBox("请输入移位次数M=?")) '输入循环次数的大小If N <= 0 Then Exit SubReDim A(N - 1)Print "原始数组值"For i = 0 To N - 1 '给数组赋值A(i) = Int(Rnd * 100)Print A(i);Next iPrint'移位For i = 1 To M '循环体完成右移一位,循环完成右移j 位t = A(N - 1)For k = N - 1 To 1 Step -1 '循环右移A(k) = A(k - 1)Next kA(0) = tNext i'打印右移后的数组值Print "循环右移" & M & "位后的数组值"For i = 0 To N - 1Print A(i);Next iPrintEnd Sub2.Const NM = 100Private Sub Command1_Click()Dim a(1 To NM) As Single, b(1 To NM) As Integer, max As IntegerDim i As Integer, j As Integer, k As Integer, t As IntegerFor i = 1 To NM '输入100个数值a(i) = Val(InputBox("请输入a(" & i & ") 的值"))If Int(a(i)) = a(i) Then '判断是否为整数k = k + 1 '整数个数加1b(k) = a(i) '将这个整数存放到数组BEnd IfNext i'选择排择For i = 1 To k - 1max = iFor j = i + 1 To kIf b(max) < b(j) Then max = jNext jIf max <> i Thent = b(max): b(max) = b(i): b(i) = tEnd IfNext i'打印输出For i = 1 To kPrint b(i);If i Mod 5 = 0 Then PrintNext iEnd Sub3.Private Sub Command1_Click()Dim a() As IntegerDim n%, i%, j%n = Val(InputBox("输入一个整数n=?"))ReDim a(n)Form1.ClsRandomizePrint "产生的30个随机整数:"For i = 1 To na(i) = Int(Rnd * 21) - 10Print a(i);If i Mod 10 = 0 Then PrintNext iPrint'删除数组的相同数据j = 2Do While j < nFor i = 1 To j - 1 '查找相同的元素If a(j) = a(i) Then Exit ForNext iIf i < j Then '如果第i个数与前面的数据相同,删除第i个元素For i = j To n - 1a(i) = a(i + 1)Next in = n - 1ReDim Preserve a(n)Elsej = j + 1End IfLoopPrint "删除后的数据:"For i = 1 To nPrint a(i);If i Mod 10 = 0 Then PrintNext iEnd Sub4.Private Sub Command1_Click()Dim a(1 To 50) As Integer, i%, j%, t%, p%, n%, x%n = 0 '已经产生的元素个数RandomizeDo While n < 50x = Int(Rnd * 90) + 10 '产生10~100之间的随机整数 For i = 1 To nIf x = a(i) Then Exit ForNext iIf i > n Thenn = n + 1a(n) = xEnd IfLoopFor i = 1 To 49 ' 使用选择法排序p = iFor j = i + 1 To 50If a(p) > a(j) Then p = jNext jt = a(p): a(p) = a(i): a(i) = tNext iFor i = 1 To 50 '打印输出Print a(i);If i Mod 10 = 0 Then PrintNext iEnd Sub第6章习题参考答案一、判断题二、选择题三、程序填空题1.(1)nsp=true(2) m mod i=0(3) p1 and p2(4)p1=nsp(i)2.(1)number(i,7)(2) (int n, int m)(3) number=number*10+m四、程序阅读1. a=9 b=42.(1) 362516941(2)1499413.64. 1 4 6五、编写程序1.Public Function fact(x As Integer) As Single '求x!Dim f As Single, i As Integerf = 1For i = 1 To xf = f * i '累积Next ifact = fEnd FunctionPrivate Sub Form_Click()Dim n%, m%, y!Dom% = Val(InputBox("m="))n% = Val(InputBox("n="))Loop Until m >= n And n >= 0y = fact(m) / (fact(n) * fact(m - n))Print yEnd Sub2private sub Insertfun(a%(), y%)Dim i as integer,n as integern=ubound(a)Redim preserve a(n+1)For i=ubound(a)-1 to 0 step -1If y <a(i) thena(i+1)=a(i)If i=0 then a(i)=yElsea(i+1)=yexit forend ifnext i3. '判断是否为回文函数Private Function Judge(str As String) As BooleanDim i As IntegerJudge = True '假设为回文For i = 1 To Len(str) \ 2 '依次判断对应位置的两个字符,只要有一组不等即不是回文If Mid(str, i, 1) <> Mid(str, Len(str) + 1 - i, 1) ThenJudge = FalseExit FunctionEnd IfNext iEnd Function4.Private Sub Form_Click()Dim n%,x!n = Val(InputBox("n="))x = Val(InputBox("x="))Print fe(n, x) '调用求值函数过程End Sub'求值函数过程Public Function fe(n%, x!) As SingleDim i As Integer, t As Singlefe = 1: t = 1For i = 1 To nt = t * x / i 't为通项fe = fe + tNext iEnd Function5.。