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×

133557

2n1

2n1

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

i1

=

迭代到│x

i1

-x

i

│<

=10

的表达式加以验证。

5

2

a

x

i

+

2

3

3x

i

为止,x

i1

为方程的近似解。显示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=

(i1)(2i1)

i1

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


本文标签: 语句 结构 循环 函数 显示