null第7章 数组 第7章 数组 7.1 数组的概念
7.2 静态数组
7.3 动态数组
7.4 控件数组
7.5 For Each...Next语句
习
七 7.1 数 组 的 概 念 7.1 数 组 的 概 念 7.1.1 数组与数组元素
数组是一组用一个统一的名称
示的、顺序排列的变量。数组中的变量称为数组元素,用数字(下标)来标识它们,因此数组元素又称为下标变量。
可以用数组名及下标惟一地识别一个数组的元素,比如x(2)表示名称为x的数组中顺序号(下标)为2的那个数组元素(变量)。
null 7.1.2 数组的类型
VB中的数据有多种类型,相应的数组也有多种类型。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量,但是一个数组中的所有元素应该具有相同的数据类型。
null 7.1.3 数组的维数
如果一个数组的元素只有一个下标,则称这个数组为一维数组。例如,数组a有10个元素:a(1)、a(2)、a(3)……a(10),依次保存10个学生的一门功课的成绩,则a为一维数组。一维数组中的各个元素又称为单下标变量。一维数组中的下标又称为索引(Index)。
如果有10个学生,每个学生有5门功课的成绩,如表7-1所示。
null表7-1 学生成绩表 null 7.1.4 数组的形式
在VB中有两种形式的数组:静态数组和动态数组。静态数组是指数组元素的个数固定不变,而动态数组的大小(其元素的个数)在运行时可以改变。
7.2 静 态 数 组7.2 静 态 数 组7.2.1 数组的声明
声明数组的格式为
Dim 数组名(〈维数定义〉) [ As 〈类型〉]
null 7.2.2 数组的使用
在建立(声明)一个数组之后,就可以使用数组。使用数组就是对数组元素进行各种操作,如赋值、表达式运算、输入或输出等。
对数组元素的操作与对简单变量的操作基本一样,但在引用数组元素的时候要注意以下几点:
null ① 数组声明语句不仅定义数组、为数组分配存储控件,而且还能对数组进行初始化,使得数值型数组的元素值初始化为0,字符型数组的元素值初始化为空等等。
② 引用数组元素的方法是在数组名后的括号中指定下标
t = a(2) : s = b(3,4)
其中,a(2)表示数组a中索引值为2的元素,b(3,4)表示二维数组b中行下标为3,列下标为4的元素。
null③ 数组名、数组类型和维数必须与数组声明时一致。
④ 下标值应在数组声明时所指定的范围之内。
⑤ 在同一过程中,数组与简单变量不能同名。
null 7.2.3 静态数组的应用
【例7-1】 计算某组10个同学的总分、平均分。
设计步骤如下:
(1) 从“文件”菜单中选择“新建
”,在打开的“新建工程”对话框中双击“
EXE”,新建一个标准工程。
(2) 建立应用程序用户界面。在窗体设计器中加入两个标签Label1、Label2和一个命令按钮Command1,调整它们的位置及大小,如图7.1所示。
(3) 设置对象属性,参见图7.3所示。null图7.1 建立用户界面null图7.2 在“代码窗口”中输入 null (4) 编写事件过程代码。考虑到要在不同的过程中使用数组,所以首先在模块的通用段声明数组。从“视图”菜单中选择“代码窗口”,在“代码窗口”中的对象下拉列表框中选“(通用)”,在事件程序下拉列表框中选“(声明)”,输入下列代码,如图7.2所示。
nullOption Base 1
Dim a(1 To 10) As Single
“统计”按钮Command1的Click事件代码为
Private Sub Command1_Click()
Dim i As Integer, total As Single, average As Single
For i = 1 To 10
a(i) = Val(InputBox("请输入第" & Str(i) & "个学生的成绩", "输入成绩"))
nulltotal = total + a(i)
Next i
average = total / 10
Label1.Caption = Label1.Caption + Format(total)
Label2.Caption = Label2.Caption + Format(average)
End Sub
运行程序,单击“统计”按钮,依次输入10个学生的成绩,如图7.3左所示,计算结果如图7.3右所示。
null图7.3 依次输入学生成绩和统计结果 null 【例7-2】 输入一串字符,统计各字母出现的次数,不区分大小写。
设计步骤如下:
(1) 建立用户界面并设置对象属性,如图7.4左所示。
null图7.4 建立用户界面和程序运行结果 null (2) 编写事件代码。“统计字母”命令按钮Command1的Click事件代码为
Private Sub Command1_Click()
Dim a(1 To 26) As Integer
Dim i As Integer, j As Integer, c As String * 1
tot = Len(Text1) ' 求字符串的长度
For i = 1 To tot
c = UCase(Mid(Text1, i, 1))
' 取一个字符,将其转换成相应的大写字母 nullIf c >= "A" And c <= "Z" Then
j = Asc(c) - 65 + 1 ' 将A~Z大写字母转换成1~26的下标
a(j) = a(j) + 1 ' 对应数组元素加1
End If
Next i
For j = 1 To 26 ' 输出字母及其出现的次数
nullIf a(j) > 0 Then
Label2.Caption = Label2.Caption & Chr$(j + 64) & "=" & a(j) & " "
End If
Next j
End Sub
程序运行结果如图7.4右所示。
null 【例7-3】 随机产生10个数,用“选择排序法”按递增顺序排序。
设计步骤如下:
(1) 建立用户界面并设置对象属性,如图7.6所示。
(2) 编写事件代码。“排序”命令按钮Command1的Click事件代码为
Private Sub Command1_Click()
Dim a(1 To 10) As Single
Randomize
null图7.5 选择排序法示意图nullFor i = 1 To 10 ' 产生10个随机数
a(i) = Int(Rnd * 90 + 10)
Label1.Caption = Label1.Caption & a(i) & " "
Next i
For i = 1 To 9 ' 进行排序
For j = i + 1 To 10
If a(j) < a(i) Then
t = a(i) ' 交换数据
a(i) = a(j)
a(j) = t
nullEnd If
Next j
Next i
For i = 1 To 10 ' 输出排序后的结果
Label2.Caption = Label2.Caption & a(i) & " "
Next i
Command1.Enabled = False
End Sub
程序运行结果如图7.6右所示。null图7.6 用户界面和排序结果null 【例7-4】 将文本框的数据存入数组中,编写程序,
能输入个人情况并可根据姓名进行查询。
设计步骤如下:
(1) 建立应用程序用户界面并设置对象属性,如图7.7所示。
(2) 编写事件代码。在通用段声明数组: null图7.7 建立用户界面和设置对象属性nullDim a(10, 6) As Variant
' 定义变体数组,其数组元素可以是Integer、Long等类型
Dim num As Integer
“输入”命令按钮Command1的Click事件代码为
Private Sub Command1_Click()
Static i As Integer
' 用Static声明,只重设0一次,其值可保留到下次过程调用
Text1.SetFocus
' 使程序开始时,光标(焦点)位于输入框Text1中
i = i + 1nullForm1.Caption = "请输入第" & Str(i + 1) & "位同志的情况"
a(i, 1) = Text1.Text ' 数据输入
a(i, 2) = Text2.Text
a(i, 3) = Text3.Text
a(i, 4) = Text4.Text
a(i, 5) = Text5.Text
a(i, 6) = Text6.Text
nullnum = i
Text1.Text = ""
' 清空各文本框内容,为下次输入或查询做准备
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub
“查询”命令按钮Command2的Click事件代码为
nullPrivate Sub Command2_Click()
Static i As Integer
For i = 1 To num
If a(i, 1) = Text1.Text Then ' 确定输入姓名存在
Text2.Text = a(i, 2) ' 调出相应数据
Text3.Text = a(i, 3)
Text4.Text = a(i, 4)
Text5.Text = a(i, 5)
Text6.Text = a(i, 6)
Exit Sub ' 跳出本过程
nullEnd If
Next i
MsgBox "查无此人!", vbOKOnly, "抱歉" ' 姓名不相符时,输出消息框
End Sub
“结束”命令按钮Command3的Click事件代码为
Private Sub Command3_Click()
Unload Me
End Sub
程序运行结果如图7.8所示。
null图7.8 输入和查询个人情况
null 【例7-5】 矩阵的加法运算。两个相同阶数的矩阵A和B相加,是将相应位置上的元素相加后放到同阶矩阵C的相应位置。
设计步骤如下:
(1) 设计程序界面和设置对象属性。选择“新建”工程,进入窗体设计器,在窗体中增加3个图片框Picture1~Picture3,两个标签Label1、Label2和两个命令按钮Command1、Command2。设置对象属性如图7.9所示。
null图7.9 设计窗体界面与运行程序
null(2) 编写代码。在“通用”段声明数组:
Dim a(5, 3) As Integer, b(5, 3) As Integer
“重置”按钮Command1的Click事件代码为
Private Sub Command1_Click()
For n = 1 To 5 ' 控制矩阵行数
For m = 1 To 3 ' 控制矩阵列数
x = Int(Rnd * 100): a(n, m) = Val(x) ' 产生随机数
x = Int(Rnd * 100): b(n, m) = Val(x) ' 产生随机数 nullNext
Next
Picture1.Cls: Picture2.Cls: Picture3.Cls ' 清空图片框
Picture1.CurrentY = 80: Picture2.CurrentY = 80 ' 控制输出位置
For n = 1 To 5
nullFor m = 1 To 3
Picture1.Print Format(a(n, m), “@@@@”); ‘ 输出产生的随机数
Picture2.Print Format(b(n, m), "@@@@");
' 输出产生的随机数
Next
Picture1.Print: Picture2.Print ' 换行
Next
End Subnull“计算”按钮Command2的Click事件代码为
Private Sub Command2_Click()
Dim c(5, 3) As Integer
For i = 1 To 5
For j = 1 To 3
c(i, j) = a(i, j) + b(i, j) ' 求两矩阵相加的各项值
Next
Next
Picture3.Cls ' 清空
Picture3.CurrentY = 80 ' 确定输出位置null For n = 1 To 5
For m = 1 To 3
Picture3.Print Format(c(n, m), "@@@@");
' 输出结果数据
Next
Picture3.Print ' 换行
Next
End Sub
运行程序,单击“重置”按钮产生原始数据,单击“计算”按钮得到相加结果。如果再次单击“重置”按钮,则重新产生数据,如图7.10所示。null图7.10 两矩阵相加运行结果 7.3 动 态 数 组 7.3 动 态 数 组 7.3.1 创建动态数组的方法
创建动态数组的步骤如下:
① 声明一个未指明大小及维数的数组。格式为
Public | Private | Dim | Static 数组名() As 类型
② 用ReDim语句分配实际的元素个数。格式为
ReDim [ Preserve ] 数组名(〈维数定义〉) [ As〈类型〉]
null 7.3.2 保留动态数组的内容
有时希望改变数组大小而又不丢失数组中的数据,这时可以使用具有Preserve关键字的ReDim语句。例如:
ReDim a(2,4)
ReDim Preserve a(2,6) null 【例7-6】 用动态数组修改例7-4,从而能输入个人情况并可根据姓名进行查询。
建立应用程序用户界面并设置对象属性,如例7-4所示。接着修改事件编码。
在通用段声明数组:
Dim a( ) As Variant ' 声明一个未指定维数及大小的数组
Dim num As Integer
修改“输入”命令按钮Command1的Click事件代码为
nullPrivate Sub Command1_Click()
Static i As Integer
Text1.SetFocus
' 使程序开始时,光标(焦点)位于输入框Text1中
i = i + 1
ReDim Preserve a(7, i)
' 声明动态数组,保留原先数据
Form1.Caption = "请输入第" & Str(i + 1) & "位同志的情况"
nulla(1, i) = Text1.Text
a(2, i) = Text2.Text
a(3, i) = Text3.Text
a(4, i) = Text4.Text
a(5, i) = Text5.Text
a(6, i) = Text6.Text
num = i
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
nullText4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub
“查询”命令按钮Command2的Click事件代码为
Private Sub Command2_Click()
Static i As Integer
For i = 1 To num
If a(1, i) = Text1.Text Then
nullText2.Text = a(2, i)
Text3.Text = a(3, i)
Text4.Text = a(4, i)
Text5.Text = a(5, i)
Text6.Text = a(6, i)
Exit Sub ' 跳出本过程
End If
Next i
MsgBox "查无此人!", vbOKOnly, "抱歉"
End Sub
null“结束”命令按钮Command3的Click事件代码为
Private Sub Command3_Click()
Unload Me
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
图7.11 杨辉三角形
End Sub
程序运行结果同例7-4。null 【例7-7】 编写程序,输出杨辉三角形,如图7.11所示。
设计步骤如下:
(1) 建立应用程序用户界面并设置对象属性,参见图7.12所示。
(2) 编写代码。
在模块的通用段声明一个动态数组:
Dim a( )
为了能输入行数并按回车键后可以得到各项,编写文本框Text1的按键(KeyPress)事件代码为null图7.11 杨辉三角形 nullPrivate Sub Text1_KeyPress(KeyAscii As Integer)
Dim n As Integer
If KeyAscii = 13 Then ' 按回车键时执行
n = Val(Text1.Text) ' 在文本框中输入的行数
If n > 10 Then ' 设定不超过10行
MsgBox "请不要超过10" ' 消息框
Exit Sub ' 退出过程
End If
nullReDim a(n, n) ' 分配动态数组实际的元素个数
For i = 1 To n
a(i, 1) = 1: a(i, i) = 1 ' 使得每行两边的元素值为1
Next
Print Tab(20); Format(1, "!@@@") & Chr(13)
Print Tab(18); Format(1, "!@@@") & Space(2) & Format(1, "!@@@") & Chr(13)
For i = 3 To n
Print Tab(20 - i * 2); Format(a(i, 1), "!@@@@") & Space(2);null For j = 2 To i - 1
a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
Print Format(a(i, j), "!@@@@@");
Next
Print Space(2) & Format(a(i, i), "!@@@@") & Chr(13)
Next
End If
End Sub
null图7.12 杨辉三角形 7.4 控 件 数 组7.4 控 件 数 组 7.4.1 控件数组的概念
如果在应用程序中用到一些类型相同且功能类似的控件,则可将这些相同的控件视为一个数组——“控件数组”。控件数组的使用类似数组变量的使用,也具有如下特点:
(1) 相同的名称(Name)。
(2) 以下标索引值(Index)来识别各个控件。
null7.4.2 控件数组的建立
建立控件数组的方法有3种:
(1) 给控件起相同的名字。
(2) 将现有的控件复制并粘贴到窗体或框架、图片框上。
(3) 将控件的Index属性设置为非Null数值。
null 1. 给控件起相同的名称
通过改变已有控件的名称,可以将一组控件组成控件数组,具体步骤如下:
(1) 画出控件数组中要添加的控件(必须为同一类型的控件),并且决定哪一个控件作为数组中的第一个元素。
(2) 选定控件并将其Name属性设置成数组名称。
(3) 在为数组中的其他控件输入相同名称时,VB将显示一个对话框,要求确认是否要创建控件数组。此时选择“是”,确认操作。null图7.13 确认创建控件数组null 2. 复制现存控件
利用复制、粘贴的功能建立控件数组,如同文本编辑一样方便。具体步骤如下:
(1) 画出控件数组中的第一个控件。
(2) 当控件获得焦点时,单击“复制”按钮,或按Ctrl+C组合键。
(3) 单击“粘贴”按钮,或按Ctrl+V组合键。
(4) 继续单击“粘贴”按钮(或按Ctrl+V组合键),可得到控件数组中的其他控件。 null图7.14 新数组元素的索引值与其添加到控件数组中的次序一样
null 3. 指定控件的索引值
直接指定控件数组中第一个控件的索引值为0,然后利用前两种方法中的任何一种添加控件数组的成员,将不会出现对话框询问是否创建控件数组。
null 7.4.3 控件数组的使用
【例7-8】 设计窗体,输入两个数,根据不同运算符计算结果。
设计步骤如下:
(1) 建立应用程序用户界面并设置对象属性。利用Label控件,在窗体上拖曳出4个标签对象Label1~Label4;利用TextBox控件,拖曳出Text1和Text2文本框对象;利用Frame控件,拖曳出Frame1框对象。
null图7.15 用户界面与程序运行结果 null(2) 编写程序代码。单选钮Option1的Click事件代码为
Private Sub Option1_Click(Index As Integer)
Dim x As Single, y As Single
x = Val(Text1.Text)
y = Val(Text2.Text)
Select Case Index ' Index值从0开始
Case 0 ' 加
Label4.Caption = x + y
Case 1 ' 减
null Label4.Caption = x - y
Case 2 ' 乘
Label4.Caption = x * y
Case 3 ' 除
Label4.Caption = x / y
Case 4 ' 整除
Label4.Caption = X \ Y
Case 5 ' 余数
Label4.Caption = x Mod y
nullCase 6 ' 指数
Label4.Caption = x ^ y
Case Else ' 字符串连接
Label4.Caption = x & y
End Select
End Sub
程序运行结果如图7.15右所示。
null 【例7-9】 编制程序,演示排序过程。
设计步骤如下:
(1) 建立应用程序用户界面。选择“新建”工程,进入窗体设计器,首先增加一个用作容器的框架Frame1,选中Frame1,在其中增加一个文本框控件数组Text1(0)~Text1(10)和一个标签控件数组Label1(0)~Label1(10)。然后在窗体中增加一个命令按钮控件数组Command1(0)、Command1(1)和一个标签Label2,如图7.16所示。
(2) 设置对象属性,见表7-2。null表7-2 属性设置null图7.16 建立程序界面
null(3) 设计代码。在窗体的通用过程中声明数组变量:
Dim a(10) As TextBox ' 显示数据的对象数组
窗体的Activate事件代码为
Private Sub Form_Activate()
Randomize
For i = 1 To 10
Set a(i) = Text1(i)
a(i).Text = Int(Rnd * 199) - 99nulla(i).BackColor = RGB(255, 255, 255)
Next
End Sub
命令按钮控件数组Command1的Click事件代码为
Private Sub Command1_Click(Index As Integer)
Command1(0).Enabled = False
For i = 1 To 9
a(i).BackColor = RGB(255, 0, 255)
nullLabel2.Caption = " 以A(" & Trim(i) & ")为擂主与后边的元素依次比较,如有比A(" & _
Trim(i) + ")小者,则与A(" & Trim(i) & ")交换。"
For j = i + 1 To 10
a(j).BackColor = RGB(255, 0, 255)
MsgBox "比较A(" & Trim(i) & ")和A(" & Trim(j) & ")", , "比较法排序"
If Val(a(i).Text) > Val(a(j).Text) Then
MsgBox "交换A(" & Trim(i) & ")和A(" & Trim(j) & ")", , "A(" & Trim(i) & _
") > A(" & Trim(j) & ")"nullt = a(i).Text: a(i).Text = a(j).Text: a(j).Text = t
End If
a(j).BackColor = RGB(255, 255, 255)
Next j
a(i).BackColor = RGB(0, 255, 0)
Next i
a(10).BackColor = RGB(0, 255, 0)
Label2.Caption = ""
End Sub
null图7.17 排序演示过程
null图7.18 排序结果 7.5 For Each...Next语句7.5 For Each...Next语句 For Each...Next与For...Next循环类似,两者都用来执行指定重复次数的一组语句。但For Each...Next语句专门用于数组或对象集合(本书不涉及集合)中的每个元素。语法为
For Each〈成员〉In〈数组〉
[〈语句列〉]
[Exit For]
Next [〈成员〉]null 【例7-10】 利用For Each...Next循环语句,求1+2+3+...+100的值。
设计步骤如下:
(1) 建立应用程序用户界面并设置对象属性,如图7.19所示。
null图7.19 建立用户界面和设置对象属性 null(2) 编写事件代码。
“求和”按钮Command1的Click事件代码为
Private Sub Command1_Click()
Dim a(100), b
For i = 1 To 100 ' 给各数组元素赋值
a(i) = i
Next i
For Each b In a() ' 用For Each...Next循环语句求和
s = s + b ' 累加
null Next
Label2.Caption = s ' 输出结果
End Sub
“退出”命令按钮Command2的Click事件代码为
Private Sub Command2_Click()
Unload Me
End Sub
程序运行结果如图7.20所示。null图7.20 程序运行结果 null 【例7-11】 本例建立一个数组,并通过Rnd函数为每个数组元素赋给一个1~100之间的整数。然后用For Each...Next语句输出值大于50的元素,求出这些元素的和。如果遇到值大于90的元素,则退出循环。
设计步骤如下:
(1) 建立应用程序用户界面并设置对象属性,如图7.21所示。 null图7.21 建立用户界面和设置对象属性
null(2) 编写事件代码。在“通用”的“声明”段中输入:
Dim aa(1 To 20)
“执行”命令按钮Command1的Click事件代码为
Private Sub Command1_Click()
For i = 1 To 20
aa(i) = Int(Rnd * 100) ' 产生随机数
Next i
For Each a In aa
If a > 50 Then
Label2.Caption = Label2.Caption & Space(2) & anulls = s + a ' 累加求和
End If
If a > 90 Then ' 值大于90的元素
MsgBox "数据超过90!", 0, "退出" ' 消息框
Exit For ' 退出本循环
End If
Next a
Label4.Caption = s
End Sub
程序运行结果如图7.22所示。
null图7.22 程序运行结果 习 题 七 习 题 七 7.1 将下列字符存放到数组中,并以倒序打印出来。字符如下:
a b q r s t w x y e m n
7.2 从键盘输入10个数,要求按从小到大的顺序打印出来。
null 7.3 某数组有20个元素,元素的值由键盘输入,要求将前10个元素与后10个元素对换。即第1个元素与第20个元素互换,第2个元素与第19个元素互换……第10个元素与第11个元素互换。输出数组原来各元素的值和对换后各元素的值。
7.4 随机产生10个两位整数,找出其最大值、最小值和平均值。
null 7.5 求斐波那契(Fibonacci)数列。Fibonacci数列问题起源于一个古典的有关兔子繁殖的问题。假设在第1个月时有一对小兔子,第2个月时成为大兔子,第3个月时成为老兔子,并生出一对小兔子(一对老,一对小)。第4个月时老兔子又生出一对小兔子,上个月的小兔子变成大兔子(一对老,一对大,一对小)。第5个月时上个月的大兔子成为老兔子,上个月的小兔子变成大兔子,两对老兔子生出两对小兔子(两对老,一对中,两对小)……
null 7.6 编写程序,建立并输出一个10×10的矩阵,该矩阵两条对角线元素为1,其余元素均为0。
7.7 输出魔方阵,魔方阵是由自然数1~n2(n为奇数)构成的方阵,其各行、各列以及对角线元素之和均相等。
null排列魔方阵中各元素时,先将数“1”放在第1行的当中一列。2~n2中的各数依次按以下规律排列:
(1) 每一个数存放的行比前一个数的行数减1,列数加1。
(2) 若上一个数在第1行,则下一个数在第n行(最下一行)。
(3) 若上一个数在第n列,则下一个数在第1列,而行数减1。
(4) 若某数按以上规律应放的位置已被其他数占据,则该数放在上一数的下面。null 7.8 设某班共10名学生,为了评定某门课程的奖学金,按规定超过全班平均成绩10%者发给一等奖,超过全班成绩5%者发给二等奖。试编制程序,输出应获奖学金的学生名单(包括姓名、学号、成绩、奖学金等级)。
7.9 有一个6×6的矩阵,各元素的值由键盘输入,求全部元素的平均值,并输出高于平均值的元素以及它们的行、列号。
null 7.10 假设4个百货公司一天销售电视机台数如表7-3所示。试编写求这4个百货公司一天销售电视机总金额的程序。各种牌号电视机单价如表7-4所示。
null表7-3 日销售电视机数 null表7-4 电视机单价null 7.11 计算全班学生每门课的总分,同时计算每个学生的总分,最后计算总平均分数。假设全班有4个学生,每个学生考3门课,考试成绩如表7-5所示。null表7-5 学生成绩表
null 7.12 设有一个5×5的方阵,其中元素是由计算机随机生成的小于100的整数。求:
(1) 对角线上元素之和;
(2) 对角线上元素之积;
(3) 方阵中最大的元素。
7.13 设有10位同学的数学、语文、外语三门成绩,见表7-6。
null表7-6 学生成绩表 null试编写程序,实现:
(1) 查询成绩。
(2) 计算各科平均分数。
(3) 显示各科平均分以下的同学姓名。
null 7.14 使用选项按钮组计算银行本息和。设银行定期存款年利率为:1年期2.25%,2年期2.43%,3年期2.70%,5年期2.88%(不计复利)。今有本金a元,5年以后使用,共有以下6种存法:
(1) 存一次5年期。
(2) 存一次3年期,一次2年期。
(3) 存一次3年期,两次1年期。
(4) 存两次2年期,一次1年期。
(5) 存一次2年期,三次1年期。
(6) 存五次1年期。
分别计算各种存法5年后到期时的本息合计。 null 7.15 利用一维数组统计一个班学生0~9、10~19、20~29 …… 90~99及100各分数段的人数。
7.16 利用随机函数模拟投币结果。设共投币100次,求“两个正面”、“两个反面”、“一正一反”三种情况各出现多少次。
7.17 某校召开运动会,有10人参加男子100米短跑决赛,运动员号码和成绩见表7-7,试设计程序,按成绩排名次。
null表7-7 运动员号码和成绩 null 7.18 设计一个“通讯录”程序。当用户在下拉列表框中选择某一人名后,在“电话号码”文本框中显示出对应的电话号码。当用户选择或取消“单位”和“住址”复选框后,将打开或关闭“工作单位”或“家庭住址”文本框。
7.19 用“筛法”找1~100之间的全部素数。“筛法”求素数表是由希腊著名数学家Eratost Henes提出来的,其方法是在纸上写出1~n的全部整数,然后逐一判断它们是否素数,找出一个非素数就把它挖掉(筛掉),最后剩下的就是素数。具体做法是:
null (1) 先将1挖掉。
(2) 用2去除它后面的每个数,把能被2整除的数挖掉,即把2的倍数挖掉。
(3) 用3去除它后面的每个数,把3的倍数挖掉。
(4) 分别用4、5……各数作为除数去除这些数后面的各数(4已被挖掉,不必再用4当除数,只需用未被挖掉的数作除数即可)。这个过程一直进行到除数为为止(如果不是整数就取其整数部分)。
(5) 经如此“筛法”,剩下的部分全都是素数。