第7章 程序题解答2015

更新时间:2023-09-16 15:12:01 阅读量: 高中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第七章 ——程序题参考答案

※1)编写程序,求一元二次方程Ax2+Bx+C = 0的解,输入为系数A,B和C。 Public Sub P234_4_1() '求方根

Dim a, b, c As Integer

a = Val(InputBox(\输入系数a:\ b = Val(InputBox(\输入系数b:\ c = Val(InputBox(\输入系数c:\ d = b ^ 2 - 4 * a * c If d > 0 Then

x1 = (-b + Sqr(d)) / (2 * a) x2 = (-b - Sqr(d)) / (2 * a) MsgBox (\ MsgBox (\ ElseIf d = 0 Then x1 = -b / (2 * a) x2 = -b / (2 * a)

MsgBox (\ MsgBox (\ Else

MsgBox (\无解\ End If End Sub

※2)编写程序完成求和S=1+(1+2)+(1+2+3)+…+(1+2+…+10)。如果求S=1! + 2! + 3! + … + 10!,试编写程序并比较其同异。

方法1:Public Sub P234_4_2累加累加和()

Dim x, s, t, i As Integer s = 0 t = 0

For i = 1 To 10 s = s + i t = t + s Next

Debug.Print s Debug.Print t End Sub

4_2 、S=1! + 2! + 3! + … + 10!, Public Sub 求阶乘和() Dim i, j, p, s As Double s = 0

For i = 1 To 10 p = 1

For j = 1 To i

p = p * j '循环不变式,完成累乘。 Next j

Debug.Print Str(i) & \的阶乘是:\ s = s + p Next i

Debug.Print Str(i) & \的阶乘和是:\End Sub

※3)编程求100到200之间即能被3整除又能被5整除的正整数的个数,并显示这些数。

Public sub 整除() n=0

for i=100 to 200

if i mod 3=0 and i mod 5=0 then ‘或 i mod 15=0 n=n+1

Debug.print i endif Next

Debug.print n End sub

4)编程求2到100间的所有素数,并求它们的和。 Public Sub 求素数个数() Dim w, n, j, s As Double s = 0 j = 0

For w = 3 To 99 Step 2

For n = 2 To Int(Sqr(w)) '判断W是否为素数 If w Mod n = 0 Then

Exit For '能整除时说明不是素数结束内循环 End If Next

If n > Int(Sqr(w)) Then '说明是素数 Debug.Print w

s = s + w ' 累加素数

j = j + 1 '统计素数的个数 End If Next

Debug.Print \素数的个数\End Sub

5.使用循环嵌套语句编程求:在0至999的范围内,找出所有这样的数,其值等于该数中各位数字的立方和。如:153=13+53+33

求0~999之间水仙花数。

(水仙花数:指一个三位数,其各位数字立方之和等于该数本身。如:153=13+53+33)

算法思路:解此题的关键是要知道如何分离出一个三位数中的各位数字。本题采取将指定的数除10求余,所得余数就是数值最右边得一个数码。接着将除10后的数截尾取整,得到的就是去掉最右边一个数码后的数值,以此类推,每次都可以截得一个最右边的数码,将该三位数的各位数码分别截取出来并进行立方求和,如等于原数,则原数为水仙花数;否则原数不是水仙花数。

算法思路2:也可用三重循环分别控制百、十、个三位数中的各位数字(0~9)的变化,即:外循环为控制百位数码的变化,中循环为控制十位数码的变化,内循环为控制个位数码的变化和进行判断各三位数,其各位数字立方之和是否等于该数本身,是为水仙花数,否则原数不是水仙花数。

※或: Public Sub sxh()

Public Sub sxh() For N = 0 To 999

Dim m, g, s, b As Integer Dim A(3)

For b = 0 To 9 I = 1

For s = 0 To 9 M = N

For g = 0 To 9 Do While I <= 3

m = b * 100 + s * 10 + g A(I) = M Mod 10

If m = b ^ 3 + s ^ 3 + g ^ 3 Then M = Int(M / 10)

Debug.Print m I = I + 1

End If Loop

Next g If N = A(1) ^ 3 + A(2) ^ 3 + A(3) ^ 3 Then

Next s Debug.Print N

Next b End If

End Sub Next End Sub

6 .使用对话框输入十个评委的评分,要求去除最高分、最低分,求应试者的最后得分。 解:

Public Sub P234_4_6()

Dim mark!, aver!, i%, max1!, min1! aver = 0

For i = 1 To 10

mark = Val(InputBox(\请输入第\位评委的打分\If i = 1 Then

max1 = mark: min1 = mark Else

If mark < min1 Then min1 = mark

ElseIf mark > max1 Then Maxl = mark End If End If

aver = aver + mark Next i

aver = (aver - max1 - min1) / 8

MsgBox aver End Sub

※7)编程完成下列图形的打印。其中第一个*所在列为第10行,第20列。 * * ****** *** *** ****** ***** **** ****** ******* ***** ****** ****** ****** Public Sub三角形2() Public Sub 平行四边形输出() Public Sub 三角形1() Dim i, j As Integer Dim i, j As Integer For i = 10 To 13 For i = 1 To 9 For i = 10 To 14 Debug.Print Tab(20); \ Debug.Print Debug.Print Tab(30 - i); \ For j = 1 To 2 * (i - 9) - 2 Next For j = 1 To 5 Debug.Print \ Debug.Print Spc(19); \ Debug.Print \ Next j For i = 1 To 4 Next j Debug.Print Debug.Print Spc(18 - i); \Debug.Print Next i For j = 1 To i + 1 Next i End Sub Debug.Print \End Sub Next

Debug.Print

Next

End Sub

Public Sub P234_4_7倒等腰三角形() Dim i As Integer, j As Integer For i = 1 To 5 Debug.Print Spc(i); For j = 1 To 9 - (i * 2) Debug.Print \ Next j Debug.Print Next i

End Sub

8.输入两个正整数m和n,求其最大公约数和最小公倍数。

解题思路:

最大公约数 采用辗转相除法可以获得, 最小公倍数 就是 x*y/最大公约数 了 ....

用辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数; 再用第一个余数除小的一个数,得第二个余数; 又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

例如求1515和600的最大公约数, 第一次:用600除1515,商2余315; 第二次:用315除600,商1余285; 第三次:用285除315,商1余30; 第四次:用30除285,商9余15; 第五次:用15除30,商2余0。 1515和600的最大公约数是15。

Public Sub gys()

'求两个正整数的最大公约数和最小公倍数 Dim m, n, r, gb As Integer

m = Val(InputBox(\输入一个数\ n = Val(InputBox(\输入一个数\ x = m: y = n

Do While (n <> 0) '或者 while(n)求两个正整数的最大公约数 r = m Mod n m = n n = r Loop

gb = x * y / m '最小公倍数

Debug.Print \最大公约数 \ Debug.Print \最小公倍数为:\ End Sub

9.使用Select Case语句将一年中的12个月份,分成4个季度输出。

'解1:

Public Sub SelectCaseP234_4_9() Dim a As Integer Do While True

a = Val(InputBox(\请输入一个整数\ Select Case a Case 1 To 3

MsgBox (\第一季度\ Case 4 To 6

MsgBox (\第二季度\ Case 7 To 9

MsgBox (\第三季度\ Case 10 To 12

MsgBox (\第四季度\ Case -1 End Case Else

MsgBox (\输入数据错误\ End Select Loop

本文来源:https://www.bwwdw.com/article/v1xh.html

Top