admin 管理员组文章数量: 1184232
2024年3月27日发(作者:align是文本的标签属性吗)
实验D 循环结构
一、实验目的
1、掌握For语句的使用。
2、掌握Do语句的各种形式的使用。
3、掌握如何控制循环条件,防止死循环或不循环。
二、实验内容
1、利用单循环结构显示如图D.1所示的界面。
2、利用单循环实现如图D.2所示的界面。
3、计算S=1+
1111111
4
+++++++…当第i项的值<10时结束。
24711162229
4、计算
的近似值,
的计算公式为:
2
2
4
2
6
2
2n
×××…×
=2×
133557
2n1
2n1
2
5、求Sn=a+aa+aaa+aaaa+…+aa…aaa(n个a),其中a是一个由随机数产生的1~9(包括1、
9)中的一个正整数,n是一个由随机数产生5~10(包括5、10)中的一个数。
6、编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个3位数,其各数字立方和
等于该数字本身。例如,153是水仙花数,因为153=1+5+3。
333
7、参阅教材4.20,用迭代法求x=
3
a
。求立方根的迭代公式为:x
i1
=
迭代到│x
i1
-x
i
│<
=10
的表达式加以验证。
5
2
a
x
i
+
2
3
3x
i
为止,x
i1
为方程的近似解。显示a=3、27的值,并通过求
3
a
8、一个富翁试图与陌生人做一笔换钱生意,换钱规则为:陌生人每天给富翁10万元,直到
满一个月(30天);而富翁第一天给陌生人1分钱,第2天2分,第3天4分,……,富翁
每天给陌生人的钱是前一天的两倍,直到满一个月。分别显示富翁给陌生人的钱和陌生人给
富翁的钱为多少?
9、用计算机安排考试日程。期末某专业在周一~周六的6天时间内要考x,y,x三门课程,考
试顺序为先考x,然后考y,最后考z,规定一天只能考一门,且z课程只能安排在周五或
周六考。编写程序安排考试日程(即x,y,z三门课程各在那一天考),要求列出满足条件的所
有方案。
习题四
1、 结构化程序设计的三种基本结构是什么?
顺序结构、选择结构、循环结构
2、 指出下列赋值语句中的错误(包括运行时的错误):
(1)10x=Sin(x)+y 不能以数值开头
(2)c=3+Sqr(-3) Sqr(N)平方根,数值不能为负
(3)c+x+y=c*y 等式左边不可以是表达式
(4)x=Sin(x)/(20 Mod 2) Mod取模余数不能为零
3、Msgbox函数与InputBox函数之间有什么区别?各自获得什么值?
InputBox函数的作用是打开一个对话框,等待用户输入内容,其值的类型为字符串;
Msgbox函数的作用是打开一个消息框,等待用户选择一个按钮,返回的是整数值。
4、要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?
如何编写对应的Print方法?
答: Dim x!, y!, z!
x = 0.123
y = 0.1234
z = 0.12345
Print Round(x * 10) / 10
Print Round(y * 100) / 100
Print Round(z * 1000) / 1000
5、语句 If(表达式) Then··· 中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?
算术、关系、逻辑
6、指出下列语句中的错误:
(1)If x≥y Then Print x 大于等于应写为:>=
(2)If 10 < x < 20 then x = x +20 “10 7、按照下列条件,写出相应的条件语句: (1)当字符型变量中第三个字符是”C”时,利用Msgbox显示”Yes”,否则显示”No”。 Dim c As String c = InputBox("c=") If Mid(c, 3, 1) = "C" Then MsgBox "Yes" Else MsgBox "No" End If (2)利用If语句、Select Case语句两种方法计算分段函数: y= x+3x+2, x>20 2 3x -2, 10≤x≤20 1 +|x|, 0 x # 使用If语句 Dim x As Single, y As Single x = Val(InputBox("x=")) If x > 20 Then y = x ^ 2 + 3 * x + 2 ElseIf x >= 10 Then y = Sqr(3 * x) - 2 ElseIf x > 0 Then y = 1 / x + Abs(x) End If Print "y="; y # 使用Select Case语句 Dim x As Single, y As Single x = Val(InputBox("x=")) Select Case x Case Is > 20 y = x ^ 2 + 3 * x + 2 Case Is >= 10 y = Sqr(3 * x) - 2 Case Is > 0 y = 1 / x + Abs(x) End Select Print "y="; y (3)利用If语句和IIf函数两种方法求三个数x,y,z中的最大值并存入变量Max中。 # 使用If语句 Dim x As Single, y As Single, z As Single, Max As Single x = Val(InputBox("x=")) y = Val(InputBox("y=")) z = Val(InputBox("z=")) Max = x If y > Max Then Max = y If z > Max Then Max = z Print "Max="; Max # 使用IIF函数 x = Val(InputBox("x=")) y = Val(InputBox("y=")) z = Val(InputBox("z=")) Max = IIf(x > y, x, y) Max = IIf(z > Max, z, Max) Print "Max="; Max 8、在多分支结构的实现中,可以用If···Then···ElseIf···EndIf形式的语句,也可以用 Select Case···End Select形式的语句,由于后者的条件书写更灵活、简洁,是否可以完全 取代前者? 不能 9、计算下列循环语句的次数: (1)For I = -3 To 20 Step 4 6次 (2)For I = -3.5 To 5.5 Step 0.5 19次 (3)For I = -3.5 To5.5 Step-0.5 不循环 (4)For I = -3 To 20 Step 0 死循环 10、下列30~90为语句标号,分别标记该语句,第40号语句共执行了几次,第50号语句 共执行了几次,执行第90号语句后显示的结果是多少? 30 For j = 1 To 12 Step 3 40 For k = 6 To 2 Step -2 4次 50 mk = k 12次 60 Print j,k 70 Next k 80 Next j 90 Print j,k,mk j = 13 k = 0 mk = 2 11、如果事先不知道循环次数,如何用For···Next结构来实现? 用Do While循环控制 12、利用循环结构,实现如下功能: (1)s= (i1)(2i1) i1 10 Dim i As Integer, s As Integer For i = 1 To 10 s = s + (i+1)*(2*i+1) Next i Print "s="; s (2)分别统计1~100中,满足3的倍数、7的倍数的数的数各有多少? Dim i As Integer, n3 As Integer, n7 As Integer For i = 1 To 100 If i Mod 3 = 0 Then n3 = n3 + 1 If Int(i / 7) = i / 7 Then n7 = n7 + 1 Next i Print "1-100中3的倍数有"; n3; "个" Print "1-100中7的倍数有"; n7; "个" (3)将输入的字符串以反序显示。例如,输入”ASDFGHJKL”,显示”LKJHGFDSA”。 For i = Len(s1) To 1 Step -1 s2 = s2 + Mid(s1, i, 1) Next i 13、下面程序的运行结果是什么?该程序的功能是什么? Private Sub Command1_Click() Dim x$ , n% n = 20 Do While n < > 0 a = n Mod 2 n = n 2 x = Chr(48 + a) & x Loop Print x End Sub 运行结果是10100,功能是将十进制数转化为二进制。 14、下面程序的运行结果是什么?该程序的功能是什么/ Private Sub Command1_Click() Dim x%,y%,z% x = 242: y = 44 z = x * y Do Until x = y If x > y Then x = x – y Else y = y – x Loop Print x ,z / x End Sub 结果是22和484,功能是求x和y最大公约数和最小公倍数。 15、利用随机函数产生50~100范围内的20个随机数,显示其中的最大值、最小值和平均 值。 Dim x As Integer, sum As Integer, aver As Single Dim n%, i%, max%, min% Randomize max = 50: min = 100: n = 20 For i = 1 To n x = Int(Rnd * 51 + 50) m x sum = sum + x If x > max Then max = x If x < min Then min = x Next i aver = sum / n Print "最大值:"; max, "最小值:"; min, "平均值:"; aver
版权声明:本文标题:实验D 循环结构 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711504227a597344.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论