课后编程题全

  • 格式:pdf
  • 大小:392.18 KB
  • 文档页数:14

1 课后编程题 第二章 三、把下列数学表达式转换成Visual Basic表达式 1. (-b+Sqr(b*b-4*a*c))/(2*a) 2. Cos(31*3.14/180)^2+5*Exp(3) 3. (x+y+z)/Sqr(x^3+y^3+z^3) 4. 8*Exp(x)*Log(10) 5. 2*Sin((x+y)/2)*Cos((x-y)/2) 6. (x*x+y*y)/(2*a*a) 7. x^(1/3)*y^(1/4) 8. (3+a)^2/(2*c+4*d) 第三章 三、编程题 1、通过文本框Text1输入一个实数,在Text2、Text3、Text4、Text5、Text6中分别输出该数的相反数、该数的平方、绝对值的平方根、立方以及绝对值的立方根。 Private Sub Command1_Click() Dim X As Single X = Val(Text1.Text) '使用Val函数,避免“类型不匹配”错误 Text2.Text = -X '处理数据与输出结果合并执行 Text3.Text = X * X '处理数据与输出结果合并执行 Text4.Text = Sqr(Abs(X)) '处理数据与输出结果合并执行 Text5.Text = X ^ 3 '处理数据与输出结果合并执行 Text6.Text = Abs(X) ^ (1 / 3) '处理数据与输出结果合并执行 End Sub 2、用文本框Text1和Text2分别输入两个整数给变量x和 y赋值,编写代码,使x和y的值互换,并通过文本框Text1和Text2输出交换后的变量的值。 Private Sub Command1_Click() Dim X%, Y%, T% '用类型说明符声明变量 X = Val(Text1.Text) '获取用户在两个文本框中输入的数据 Y = Val(Text2.Text) '用Val函数避免出现“类型不匹配”错误 T = X: X = Y: Y = T '利用临时变量T,交换X和Y的数据 '上述语句也可写成下面的形式 'T = Y: Y = X: X = T Text1.Text = X '输出处理结果 Text2.Text = Y End Sub 3、输入二次方程ax2+bx+c=0的系数a、b、c,计算并输出二次方程的两个根x1、x2,窗体界面设计如图3-22所示。 Option Explicit Private Sub Command1_Click() 2 Dim a!, b!, c! '按题目要求定义变量 Dim X1 As Single, X2 As Single a = Val(Text1.Text) '获取a,b,c三个输入的数据 b = Val(Text2.Text) c = Val(Text3.Text) '计算两个根 X1 = (-b + Sqr(b * b - 4 * a * c)) / (2 * a) X2 = (-b - Sqr(b * b - 4 * a * c)) / (2 * a) Text4.Text = X1 '输出结果 Text5.Text = X2 End Sub Private Sub Command2_Click() Unload Me '卸载窗体 End Sub 第四章 P.94 三、编程题 (1)在文本框1中输入一个实数x,如果x≥0则在文本框2中输出其平方根,否则用信息对话框输出错误提示:“该数不能开平方”。 Private Sub Command1_Click() Dim x As Single '根据题目要求定义变量 x = Val(Text1.Text) '获取用户输入的数据 If x >= 0 Then '检验数据的合法性 Text2.Text = Sqr(x) '计算并输出结果 Else '显示出错信息 MsgBox "该数不能开方", vbInformation, "错误" End If End Sub (2)在文本框1输入一个整数n,判断其能否同时被5和7整除,如能则使用标签输出“xx能同时被5和7 整除”,否则输出“xx不能同时被5和7 整除”。 要求:标签中的“xx”为输入的具体数据。 Private Sub Command1_Click() Dim n As Integer '根据题目要求定义变量 n = Val(Text1.Text) '获取用户在文本框中输入的数据 If n Mod 5 = 0 And n Mod 7 = 0 Then '判断条件 Label2.Caption = n & "能同时被5和7整除。" Else Label2.Caption = n & "不能同时被5和7整除。" End If End Sub 3 (3)输入一个百分制的成绩,经判断后输出该成绩的对应等级。其中,90分以上为“优”,80~89分为“良”,70~79分为“中”,60~69分为“及格”,60分以下为“不及格”。 要求:自行设计窗体界面。 Private Sub Command1_Click() Dim iScore As Integer iScore = Val(Text1.Text) '获取输入数据 Select Case iScore Case Is < 0, Is > 100 '排除错误的数据 MsgBox "您输入的不是百分制成绩!", vbInformation, "错误" Case Is < 60 Label2.Caption = "不及格" '输出评价结果 Case Is < 70 Label2.Caption = "及格" Case Is < 80 Label2.Caption = "中" Case Is < 90 Label2.Caption = "良" Case Else Label2.Caption = "优" End Select End Sub (4)编写程序,求1!+3!+5!+7!+9! Private Sub Command1_Click() Dim I%, J%, F&, Sum As Long For I = 1 To 9 Step 2 F = 1 For J = 1 To I '计算I的阶乘值 F = F * J Next J Sum = Sum + F '累加阶乘值到Sum Next I '输出计算结果 Label1.Caption = "1!+3!+5!+7!+9! = " & Sum End Sub (5)编写程序,计算下列公式中s的值(n是运行程序时输入的一个正整数)。 nsn1)1(...41312111 s = 1 + (1 + 2) + (1 + 2 + 3) + „ + (1 + 2 + 3 + „ + n) s = 1 + 22 + 32 + „ + n2 s =1×2-2×3+3×4-4×5+…+(-1) (n-1)×n×(n+1) ns...3211...32112111 4 Private Sub Command1_Click() Dim N%, I%, S! N = Val(Text1.Text) '获取项数信息 S = 0 '累加和清零 For I = 1 To N '控制累加的项数 S = S + (-1) ^ (I + 1) / I Next I Label2.Caption = "S = " & S '输出结果 End Sub Private Sub Command2_Click() Dim N%, I%, S1%, S% N = Val(Text1.Text) '获取项数信息 S1 = 0: S = 0 '累加和清零 For I = 1 To N '控制累加的项数 S1 = S1 + I '计算前I个自然数的和 S = S + S1 '累加到总和 Next I Label2.Caption = "S = " & S '输出结果 End Sub Private Sub Command3_Click() Dim N%, I%, S& N = Val(Text1.Text) '获取项数信息 S = 0 '累加和清零 For I = 1 To N '控制累加的项数 S = S + I * I Next I Label2.Caption = "S = " & S '输出结果 End Sub Private Sub Command4_Click() Dim N%, I%, S& N = Val(Text1.Text) '获取项数信息 S = 0 '累加和清零 For I = 1 To N '控制累加的项数 S = S + (-1) ^ (I - 1) * I * (I + 1) Next I Label2.Caption = "S = " & S '输出结果 End Sub Private Sub Command5_Click() Dim N%, I%, S1%, S! N = Val(Text1.Text) '获取项数信息 5 S1 = 0: S = 0 '累加和清零 For I = 1 To N '控制累加的项数 S1 = S1 + I '计算前I个自然数的和 S = S + 1 / S1 '累加到总和 Next I Label2.Caption = "S = " & S '输出结果 End Sub 6、在列表框中输出1000以内能被13整除的奇数,统计其个数并显示在一个文本框中。 Private Sub Command1_Click() Dim I%, C% C = 0 List1.Clear For I = 13 To 999 Step 2 If I Mod 13 = 0 Then List1.AddItem I C = C + 1 End If Next I Text1.Text = C End Sub 7、找出2000年~2100年之间的所有闰年,要求在列表框中显示这些年份。 Private Sub Command1_Click() Dim Year% List1.Clear For Year = 2000 To 2400 Step 4 If Year Mod 100 <> 0 Or Year Mod 400 = 0 Then List1.AddItem Year End If Next Year End Sub 8、产生20个区间位于【1,100】的随机整数,分别计算其中所含奇数与偶数的平均值。 Private Sub Command1_Click() Dim Num%, I%, iC1%, iC2%, Sum1%, Sum2% iC1 = 0: iC2 = 0 Sum1 = 0: Sum2 = 0 Randomize For I = 1 To 20 Num = Int(100 * Rnd + 1) List1.AddItem Num If Num Mod 2 = 1 Then Sum1 = Sum1 + Num iC1 = iC1 + 1 6 Else Sum2 = Sum2 + Num iC2 = iC2 + 1 End If Next I Text1.Text = Sum1 / iC1 Text2.Text = Sum2 / iC2 End Sub 9、编写程序,在窗体上分别输出图4.24所示图形。 图4.24 在窗体上输出图形 倒金字塔 Private Sub Command1_Click() Dim I%, N% N = 5 For I = N To 1 Step -1 Print Tab(25 - I); String(2 * I - 1, "*") Next I End Sub 字母塔 Private Sub Command2_Click() Dim I%, J%, N% N = 5 For I = 1 To N Print Tab(25 - I); For J = 1 To 2 * I - 1 Print Chr(64 + N - I + J); Next J Print Next I End Sub 10、编写程序,找出3位数中的所有素数并输出到一个列表框(或窗体)中。 Private Sub Command1_Click() Dim N%, I%, Flag As Boolean For N = 101 To 999 Step 2 Flag = True For I = 2 To Sqr(N)