第08章 VB数组
第08章Fully-differential amplifiers
Fully-differential OTA with FF
850 MHz 1.2 µm CMOS
F. Op’t Eynde, Kluwer Ac. 1993
Willy Sansen
10-05
0820
Transconductor with C
DG compen.
VDS1 = RDID ≈ 0.2 V IDS1 = β1VDS1(VGS1-VT) gm1 = β1VDS1 is constant
gm1 2π CL
vINvOUT+
1 M4
VB2
CL
Problem: keep M1-4 in saturation: Control VOUTCOM Control IDS5
Willy Sansen
10-05
VSS
084
Simple CMOS fully-diff. OTA with CMFB - 1
CL
M1
-
M3
VSS
GBWCM =
is always smaller !
Willy Sansen
10-05
0816
Fully-differential amp. with linear MOSTs
M5 B : 2 M7 : B M5
VDD
Linear MOSTs: VDS5 ≈ 200 mV
Cancel diff. signals
Willy Sansen
10-05
0823
Fully-diff. amp. with source followers: Diff. mode
GBWDM = gm1 2π CL CL= 4 pF
Ref. Banu, JSSC, Dec.88, 1410-1414
vb-数组(基础教学)
8.2
静态数组与动态数组
在VB中,根据数组元素的个数能否变化,数组分为静态 数组和动态数组。 静态数组:数组元素的个数固定不变。 动态数组:数组元素的个数在运行时可以改变。 使用动态数组就可以在任何时候改变其大小,并且可 以在不需要时清除动态数组所占的存储空间。因此,使 用动态数组更加灵活、方便,并有助于高效管理内存。
1.第二种格式:
Dim <数组名>[<下界1> To] <上界1>,[<下界2> To] <上界2>,…As 类型
Dim Population(1949 To 2000) Dim Age(10 To 100)
在某些情况下,使用To能更好地反映对象的特性。
说明: (1)数组名要做到见名知义。 (2)数组名不能与变量名相同。 (3)在定义数组时,元素下标必须是常数,不能是变量 或表达式,即使事先给出变量的值也是错误的。 (4)可以定义数据后再指定数组的类型。 (5)数组的下界都必须小于上界。
Test(2,2)
Test(1,3)
Test(2,3)
第 0列
第1列
第2列
第 3列
定义了一个二维数组,该数组的名字为Test,类型为 Integer(整型),共有3行,4列,12个数组元素。
说明: (1)数组名的命名规则,与简单变量相同 (2)数组必须先定义,后使用 (3)当用Dim 语句定义数组时,会进行数组元素初始化 (4)默认下标下界为0,可通过Option Base语句来设置 (5)要注意区分“可以使用的最大下标值”和“元素个数”
2.数组元素的输入 (1)通过赋值语句来实现数组元素的输入。 (2)通过循环语句来实现数组元素的输入。 (3)通过InputBox函数输入。 Dim A(4) As String A(1) = " Zhang " A(2) = " Wang " A(3) = " Li" A(3) = " Zhao" Dim A(4) As Integer For I=1 To 4 A(I)=I Next I
VB_数组
功能:声明一个二维数组或多维数组并分配相应的存储单元。
说明:参数与一维数组完全相同。下标的个数决定了数组的 维数,多维数组最大维数为60。每一维的大小为:上界-下 界+ 1 ;数组的大小(数组元素的总个数)为每一维大小的 乘积。 例如:Dim a(2,3) As Single
二维数组在内存的存放顺序是“先行后列”。例如数组a 的各元素在内存中的存放顺序是:
数组声明语句完成四个任务:
① 建立数组名。 ② 建立数组的数据类型。 ③ 指定数组中元素的数目。 ④ 初始化数组中每个元素的值(数值数组元素为 0,字符串数组元素为空字符串,Variant数组元 素的值为特别值Empty)。
4.1.2 静态数组和动态数组
1. 静态数组声明 在声明时确定了大小的数组称为静态数组 (1) 一维数组的声明 (无隐式声明) Dim 数组名([下界 To] 上界) [As 数据类型] 或: Dim 数组名[数据类型符] ([下界 To] 上界) 例:Dim a(1 To 10) As Integer 1是下标的下界 ' 声明了a数组有10个元素 数组元数的数据类型
2. 数组元素初始化 系统默认的数组初值:0,空字符串,Empty。 若需给数组的各元素赋具体值,常用循环语句实现。 例如: Dim A(10) As Integer
Dim i As Integer
For i=0 To 10 A(i)= i * i Next i
4.2.2 数组的输入、输出和复制
数组分类: VB中的数组,按不同的方式可分为以下几类: 按数组的大小(元素个数)是否可以改变来分为:静 态(定长)数组、动态(可变长)数组。 按元素的数据类型可分为:数值型数组、字符串数组、 日期型数组、变体数组等。 按数组的维数可分为:一维数组、二维数组、多维数 组。 对象数组:菜单对象数组、控件数组。
VB数组
1 A(1) 2 A(2)
3 A(3)
数组名表示内存首地址, 4 A(4)
是地址常量
5 A(5)
6 A(6)
编译时分配连续内存 内存字节数=数组元素个数*
sizeof(元素数据类型)
说明:
1.数组的元素个数为:上界-下界+1。 2.缺省<下界>为0,若希望下标从1开始,可在模块的通用部分 使用Option Base语句将设为1。其使用格式是:
A(i)=A(10-i+1) A(10-i+1)=t Next I
三、 排序问题(P196例8.2)
例 用冒泡法对10个数排序
排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然
后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止——第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束
8.4 数组其他操作
前面的数组定义都是n在=I运np行ut前Bo,x$如(“需输要入在n的运值行:时”定)义数组 的大小,可通过下述两种Re方Di法m 解Ar决r2:(n)
1)用ReDim语句定义数组; 2)使用动态数组。(后讲) 一、数组的上、下界函数 Lbound(数组[,维]) Ubound(数组[,维]) 功能:分别返回一个数组中指定维的下界和上界。 说明:两个函数一起使用可确定一个数组的大小。
个元素,也可以复制到一个一维F数or组j中=1的t某o 个5 元素,
反之亦然。 输出
Print a(i,j);””;
计算机应用VB-数组
5.3.4 与数组有关的几个函数
其中: <数组名>:必需的。数组变量的名称,遵循标 准变量命名约定。 <N> :可选的,一般是整型常量或变量。指定 返回哪一维的上界。1 表示第一维,2 表示第 二维,如此等等。如果省略默认是1。
5.3.4 与数组有关的几个函数
例如: Dim A(-5 To 50,20,7 To 65) As Integer UBound(A,3)=65 LBound(A)=-5
计算机中的“数组”是一群在内存中占用连续 地址的同性质的变量的集合,这些变量具有相 同的名称和数据类型,我们将数组中的每一个 数据称为“数组元素”,数组中的每个数组元 素相当于一个变量,数组元素通过下标进行区 分,下标代表数组元素在数组中的顺序(位置)。
5.1数组的基本概念
下面简要介绍有关数组的基本概念: (1) 数组:是具有相同数据类型的变量的一个有 序的集合。 如,Dim A(1 To 100) As Integer表示一个包含 100个数组元素、数组名为A、数据类型为整 型的数组。
5.2.2 动态数组的声明
说明: (1) ReDim语句是一个可执行语句,只能出现在过程中, 并且可以多次使用,改变数组的维数和大小,但不能 改变数组的数据类型。 例如:以下语句 Dim x() As Integer ReDim x(10) ReDim x(20) x(20) = 30 Print x(20) ReDim x(20, 7) x(20, 7) = 10 Print x(20, 7) 是正确的,而语句Redim x(34,20) As Long是错误的。
5.2 数组的定义
【例5-3】用循环方式对数组赋值。 Sub Form_Click() Dim i as Integer Dim A(5) As Integer For i=0 To 5 A(i)=i Next i For i=0 To 5 Print A(i) Next i End Sub
VB数组
1、格式中“数组名”与简单变量名相同,可以是任何合法的visual basic变量名。
“As 数据类型名称”用来说明数组的类型。
可以是integer、long、single、double、currency、 string 等基本类型或用户自定义类型,也可以是variant(变体)类型。
若省略“As 数据类型名称”,则定义的数组为variant(变体)类型。
2、数组必须先定义,后使用。
Basic早期版本支持数组的隐式定义,即如果一个数组未经定义而直接使用,则该数组名维的默认上界为10,下界为0或1,但在visual basic中,不允许使用隐式定义。
3、当用dim语句定义数组时,该语句把数值数组中的全部元素都初始化为0,而把字符串数组中的全部元素都初始化为空字符串。
4、如前所述,数组默认下标下界为0,如果希望下标从1开始,可以通过 option base语句来设置,即:option base 1该语句必须出现在窗体层或模块层。
而不能出现在过程中,并且要放在数组定义之前。
第二种格式定义数组的第二种格式为:dim 数组名(下界to上界) AS 数据类型名称相对于第一种格式,这第二种格式可以根据需要直接指定数组各维的下界到上界的范围,而第一种格式其下标只能是0或1。
例如:dim a(-3 to 2) as string定义了一个一维数组A,类型为字符串型,其下标下界为-3,下标上界为2,该数组中一共有a(-3),a(-2),a(-1),a(0),a(1),a(2),这6个元素。
可以看出,第二种格式实际上已经包含了第一种格式。
只要略格式中的“下界to”,即可变为第一种格式,当下标为0或1标,可以省略“下界 to”。
因此,如果不使用option base 1 语句,则下面三个数组定义语句是等效的:Dim a(4,8)Dim a(0 to 4,0 to 8)Dim a(4,0 to 8)表面上看来,使用to似乎多此一举,实则不然,没有to,数组的下标只能是0或1,而使用to后,下标的范围可以是-32768至32767。
第08章:04:等效重力、力电综合问题、电场在生活中的应用(教师)
第八章:第04讲:等效重力、力电综合问题、生活中应用考点一:用“等效法”处理带电粒子在电场和重力场中的运动1.等效重力法将重力与电场力进行合成,如图所示,则F 合为等效重力场中的“重力”,g ′=F 合m为等效重力场中的“等效重力加速度”,F 合的方向等效为“重力”的方向,即在等效重力场中的“竖直向下”方向.2.物理最高点与几何最高点在“等效力场”中做圆周运动的小球,经常遇到小球在竖直平面内做圆周运动的临界速度问题.小球能维持圆周运动的条件是能过最高点,而这里的最高点不一定是几何最高点,而应是物理最高点.几何最高点是图形中所画圆的最上端,是符合人眼视觉习惯的最高点.而物理最高点是物体在圆周运动过程中速度最小的点.1.(多选)如图,一根不可伸长绝缘的细线一端固定于O 点,另一端系一带电小球,置于水平向右的匀强电场中,现把细线水平拉直,小球从A 点由静止释放,经最低点B 后,小球摆到C 点时速度为0,则( )A .小球在B 点时速度最大B .小球从A 点到B 点的过程中,机械能一直在减少C .小球在B 点时的细线拉力最大D .从B 点到C 点的过程中小球的电势能一直增加解析 小球所受重力和电场力恒定,重力和电场力的合力恒定,小球相当于在重力和电场力的合力及细线的拉力作用下在竖直平面内做圆周运动。
当小球运动到重力和电场力的合力和细线的拉力共线时(不是B 点),小球的速度最大,此时细线的拉力最大,故A 、C 错误;从A 点到C 点的过程中,因为重力做正功,小球摆到C 点时速度为0,所以电场力对小球做负功,小球从A 点到B 点的过程中,机械能一直在减少,B 正确;从B 点到C 点的过程中,小球克服电场力做功,小球的电势能一直增加,D 正确。
答案 BD2.如图所示,在竖直向上的匀强电场中,一根不可伸长的轻质绝缘细绳,一端系着一个带电小球,另一端固定于O 点,小球在竖直平面内做匀速圆周运动,最高点为 a ,最低点为 b .不计空气阻力,则( )A .小球带负电B .电场力跟重力是一对平衡力C .小球从 a 点运动到 b 点的过程中,电势能减小D .运动过程中小球的机械能守恒答案 B解析 小球在竖直平面内做匀速圆周运动,受到重力、电场力和细绳的拉力,电场力与重力平衡,则知小球带正电,故A 错误,B 正确.小球在从a 点运动到b 点的过程中,电场力做负功,小球的电势能增大,故C 错误.由于电场力做功,所以小球在运动过程中机械能不守恒,故D 错误.3.(多选)如图所示,可视为质点的质量为m 且电荷量为q 的带电小球,用一绝缘轻质细绳悬挂于O 点,绳长为L ,现加一水平向右的足够大的匀强电场,电场强度大小为E =3mg 4q ,小球初始位置在最低点,若给小球一个水平向右的初速度,使小球能够在竖直面内做圆周运动,忽略空气阻力,重力加速度为g 。
第08章-静电场电势
V p V1 V2 Vn
电势叠加原理:
点电荷系电场中任一点的电势,等于各个 点电荷单独存在时在该点处的电势之代数和。
3. 连续分布电荷电场中的电势
V dV
V
V
dq 4 π 0r
dV dq dS dl
例15. 半径为R的均匀带电球体,带电量为q。求电势 分布。
0
r lr r l cos
2 l r r cos 2
r r l cos r r r 2
q r r ql cos q 1 1 U 2 r r 4 r r 40 r 40 0
解:
E 2o r
ro r
P
r
V
ro E dl
o
r ln r r 2o
r0 dr r 2 r o ro (ln ro ln r ) ln 2o 2o r
如果势能零点在 ro=1m
V ln r 2o
思考
有限长情况 如何?
a
qo E dl
注意:
• 电势能为电场和位于电场中的电荷这个系统所 共有。 • 电势能是标量,可正可负。
电势和电势差
定义:
Va Epa q0
a
E dl
单位:伏特( V = J C 1) 结论:电场中a点的电势,在数值上等于把单位正 电荷从a点移至势能的零点处电场力所作的功。
oleqw静电场中电场强度e0dlle保守力作功的特点静电场的环路定理静电场电场线不能成闭合态思考保守力作功等于势能的减少pbpabaabdeeleqwo令b点的势能为零epb0a点的势能bapadleqeo结论试验电荷qo在空间某处的电势能在数值上就等于将qo从该处移至势能的零点电场力所作的功
VB数组讲解ppt
8
(二)动态数组的声明
动态数组是在数组声明时未指定数组的大小,需要使用时 才用Redim语句指定大小。
定义动态数组需要分以下两步进行:
1) 定义一个没有下标的数组。 Dim<数组名>( ) [As <数据类型],…
2) 用ReDim语句分配数组的实际元素个数。 ReDim <数组名>(<维数定义>) [As <类型>],…
12
三、 数组的基本操作
数组声明后,方可使用。可以对数组元素进行各种操作: • 对数组元素赋值 • 进行各种表达式运算、排序、统计、输出
使用数组可以缩短和简化程序。
13
(一)数组元素的输入
对数组元素的输入可以有多种方法:
• 可以使用文本框 • InputBox函数 • 赋值语句 • Array函数
如有二维数组定义: Dim A(-1 to 2,0 to 3) As Integer 第一维的大小为4,表示4行,第二维的大小为4,表示4列,则A数组中共 有4×4=16个元素
A(-1,0) A(-1,1) A(-1,2) A(-1,3)
A(0,0) A(0,1) A(0,2) A(0,3)
A(1,0) A(1,1) A(1,2) A(1,3)
Option Base n
其中n为设定的下标下界,该语句应放置在模块的通用声明部分 如有:Option Base 1
则在该模块中使用的数组下界均为1,若有个别数组下界不是1,可以使用 “下界 to 上界”的格式重设它的下界
Dim S(2) As Integer 等价于:Dim S(1 to 2) As Integer,共有2个元素
VB数组课件
数组的定义及引用
例1 统计某班(假设有30人)程序设计课程考试的平均 成绩,并输出高于平均分的成绩。(统计问题)
分析: 1.先声明数组后输入30人的成绩,再进行累加; 在循环体外打印平均成绩 2. 判断是否有>平均成绩的,有则一行输出5个
Private Sub Form_Click() Const NUM = 30
下列程序运行时单击Command1,输出的结果是( ) Private Sub Command1_Click() Dim a(10) For k = 1 To 10 a(k) = 11 - k Next
Print a(3 + a(6))
End Sub
A)2
B)3
C)4
D)5
下列程序运行时单击窗体,输出的结果是( ) Private Sub Form_Click() ‗数组声明的语句能对数组进行初始化,使得数值型数组的元素值初 始化为0,字符型数组的元素值初始化为空。 Dim a(4) a(4) = 4 For i = 1 To 3 a(i) = a(i + 1) - 1 Next Print a(1) End Sub
Max = Test(1): L = 1 '设数组第一个元素为最大值 For i = 2 To Length If Max < Test(i) Then '找到新的最大值,记录其值 和位置 Max = Test(i) L=i End If Next i MsgBox "最大值x=" & Max & ",位置是" & L End Sub
13
知识点回眸
08VB 数组(教案)
计算机程序应用基础(VB)
授课题目
数组
学时数
3
课型
理论课
授课对象
本科
授课时间
第asic程序设计教程(第3版)高等教育出版社
教学
目的
及
要求
1.掌握数组的概念及声明
2.掌握数组的基本操作
3.掌握一种排序算法(选择排序或冒泡排序)
4.掌握一维和二维数组的基本编程技巧
5.了解多维数组的编程技巧
教学主要内容
时间分配
1.数组的概念
数组的概念
定长数组及声明
多维数组及声明
二维数组及声明
动态数组及声明
2.数组的基本操作和排序
数组的输入
用Array函数为一维数组的赋值
数组的输出
求数组和、最值、位置
交换元素
数组排序
3.综合应用
分类统计
1
1学时
2
1.5学时
3
0.5学时
教学重点及
基本概念
数组的概念
定长数组及声明
数组的输入、输出
用Array函数为一维数组赋值
二维数组的应用
常用算法
选择排序,矩阵的处理
复习:
教材第5章的5.1, 5.2, 5.5
课后作业:
教材习题五:1,2,3,4,5(4),5(6),6(1),6(2)
二维数组及声明
数组的输入
数组的输出
求数组和、最值、位置
数组排序
分类统计
教
学
难
点
定长数组及声明
二维数组及声明
数组的输入
数组的输出
数组排序
教学方法
实例演示:
各种算法的演示程序
VB数组——精选推荐
VB数组VB数组━━━━━━━━━━━━━━━━━━━━━━━━━━知识要点1.数组的概念数组:存放具有相同性质的⼀组数据,也就是数组中的数据必须是同⼀个类型和性质。
数组元素:数组中的某⼀个数据项。
数组元素的使⽤同简单变量的使⽤。
2.静态数组的声明静态数组:在声明时已确定了数组元素个数。
声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As 类型此语句声明了数组名、数组维数、数组⼤⼩、数组类型。
[注意]下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可⽤Option Base语句重新设置下界的值。
3.动态数组的声明声明形式: Dim数组名 ()ReDim [Preserve]数组名([下界To]上界[,[下界To]上界[,…]])[注意]此时的上界、下界可以是赋了值的变量或表达式。
若有Preserve关键字,表⽰当改变原有数组最末尾的⼤⼩时,使⽤此关键字可以保持数组中原来的数据。
4.控件数组相同类型的控件组成的数组。
控件数组的建⽴:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运⾏时通过Load⽅法实现。
控件数组元素:由控件的Index属性值表⽰数组的F标。
5.数组的操作应掌握的基本操作有:数组初始化、数组输⼊、数组输出、求数组中的最⼤(最⼩)元素及下标、求和、平均值、排序和查找等。
5.3 常见错误和难点分析1.Dim数组声明有时⽤户为了程序的通⽤性,声明数组的上界⽤变量来表⽰,如下程序段:n=InputBox("输⼊数组的上界")Dim a(1 To n)As Integer程序运⾏时将在Dim语句处显⽰"要求常数表达式"的出错信息。
即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通⽤的问题,⼀是将数组声明的很⼤,这样浪费⼀些存储空间;⼆是利⽤动态数组,将上例改变如下:Dima()As Integern=InputBox ("输⼊数组的上界")ReDim a(1 To n)As Integer2.数组下标越界引⽤了不存在的数组元素,即下标⽐数组声明时的下标范围⼤或⼩。
vb 数组
数组的初始化
初始化即对数组的各元素赋初值。前面的赋值语句以及inputbox函数 为元素赋值,都占用运行时间而影响效率。而array函数可以有效解 决该问题 Arrar函数主要用来用数组元素赋值,把一个数据读入某个数组,格式 为:数组变量名=array(数组元素值) 注: 1、数组变量名是预先定义的数组名,在数组变量名后面没有括号。作 为变量定义他没有维数、上下界。 2、数组元素值是需要赋给数组各元素的值,各值之间以逗号隔开。 3、默认情况下数组元素的下标从0开始。 例子:static mumbers as variant numbers=array(1,2,3,4,5,) 如果想使下标从1开始则需要执行:option base 1
数组的清除与重定义
2、当把erase语句用于动态数组时将删除整个数组结构并释放数组所 占用的内存。即动态数组经erase后不复存在,而静态数组经erase 后仍按存在,只是其内容被清空。 3、当把erase语句用于变体数组时,每个元素被置为空(empty) 4、erase释放动态数组所使用的内存。在下次使用该动态数组之前, 必须用redim语句重新定义该数组变量的维数。 例子:试验erase语句的功能
基本概念—数组的定义
格式中的n为数组下标的下界,只能为0或1,如果不使用该语句则 默认为0,option basic语句只能出现在窗体层或模块层,不能出现 在过程中,并且必须放在数组定义之前。如果定义的是多维数组, 则下标的默认下界对每一维都有效。 5、注意区分“可以使用的最大下标值” 指的是下标值的上界,而 “元素个数”是指数组中成员的个数。 例如 dim array(5) 数组可以使用的最大下标值是5,如果下标从0开 始则共有6个元素,如果下标从1开始则共有5个元素。 第二种格式 可以指定数组下标的下界 语句格式:dim 数组名([下界 to]上界[,[下界to]上界]……) as 类型名 例如 dim arr(-2 to 3) as integer 定义了一维数组arr,下标下界为-2,上界为3,共有6个元素。 只要省略格式中的“下界 to”即变为第一种格式。当下标为0或1时, 可出、 数组的基本操作 输入、输出、复制 输入
第08章-电势
电势
主要内容
8.1 静电场的保守性 8.2 电势差和电势 8.3 电势叠加原理 8.4 电势梯度 8.5 电荷在外电场中的静电势能 8.6 电荷系的静电能 8.7 静电场的能量
3
8.1 静电场的保守性
静电场的环路定理
dW qoE dl
qoE cos dl
q
E 4or 2
q
y
l
0
q
z
U
40 (x2
pz y2
z 2 ) 32
U
40 (x2
pz y2
z
2
)
3 2
Ex
U x
pz
4 0
(x2
3x y2
z2)52
p
4 0
3xz r5
Ey
U y
p
40
3yz r5
Ez
U z
p(
40
dW
qoq
4or 2
cos
dl
qoq
4 o r
2
dr
b rb
q
ra
rr
drdl
qo
E
a
Wab
rb qoq dr
ra 4or 2
qoq
4o
1 ra
1 rb
结论:给定试验电荷在静电场中移动时,电场力所作 的功只与试验电荷的起点和终点的位置有关,而与路
Wab qo a E dl Epa Epb
VB程序设计--数组
For i = 0 To UBound(ib)
Picture1.Print ib(i); " Next i
Array函数
数组变量名 •是预先定义的数组名。 •在数组变量名后没有括号。 •采用变量定义形式,作为数 组使用,类型为variant。
格式:数组变量名=array(数组元素值表)
功能:把一组数据赋给数组中每个元素。 说明: •数组元素值表是一个用逗号分隔的值表; •Array函数仅适用于一维数组 •使用array函数创建的数组,其下界受Option base语句 指定的下界的限制。
dim a(10,10) as long 说明: ( 1)对于数组的每一维,可以只给出使用的 说明: 下标的最大值,即下标的上界。此时,默认下 •Option base语句只能出现在窗体通用段或标 标下界为0。 准模块中,不能出现在过程中,且必须在数组 (2)如果需要数组的下标下界从1开始, 定义语句之前。 可以:dim x%(1 to 9),a&(1 to 10,1 to 10) •默认下标值对每一维都有效。 或使用 option base语句:option base 1
注意:
(1)声明静态数组,下标为常数表达式,不能是变量。
n =Inputbox(“输入n”) Dim x(n) As Single
(2) 数组声明语句中的下标说明了数组的整体,即每一 维的大小;而在程序其他地方出现的下标表示数组中 的一个元素。两者写法形式相同,但意义不同。 例如:
Dim x(10) As Integer
x(10)=100
' 声明了x数组有11个元素
' 对x(10)这个数组元素赋值
• 给数组中的各元素赋初值的操作称为 “数组的初始化”。 • 使用dim定义的静态数组,数值型的 初始化为0,字符型的初始化为空串,
高中试卷-第08章 立体几何初步(B卷提高篇)解析版(含答案)
第八章立体几何初步B(提高卷)参考答案与试题解析一.选择题(共8小题)1.(2019春•辽宁期中)直角三角形的三边满足a<b<c,分别以a,b,c三边为轴将三角形旋转一周所得旋转体的体积记为V a,V b,V c,则( )A.V c<V b<V a B.V a<V b<V c C.V c<V a<V b D.V b<V a<V c【解答】解:∵直角三角形的三边满足a<b<c,分别以a,b,c三边为轴将三角形旋转一周所得旋转体的体积记为V a,V b,V c,∴V a b,V b a,V c,∵0,0,∴,∴V c<V b<V a,故选:A.2.(2020•大连二模)已知三棱锥P﹣ABC,面PAB⊥面ABC,PA=PB=4,,∠ACB=90°,则三棱锥P﹣ABC外接球的表面积( )A.20πB.32πC.64πD.80π【解答】解:如图,在三角形PAB中,由PA=PB=4,AB=4,得cos∠APB,∴∠APB=120°,又∠ACB=90°,不妨取AC=BC,取AB中点D,则△ABC的外心为D且DC=DA=DB,∵面PAB⊥面ABC,再设三棱锥P﹣ABC外接球的球心为O,则P,O,D三点共线;PD2;连接OC,则OC=OP=R;OC2=OD2+DC2⇒R2=(2﹣R)2+(2)2⇒R=4;∴三棱锥P﹣ABC外接球的表面积为4π×42=64π.故选:C.3.(2020•泰安模拟)我国古代数学名著《九章算术》中记载:“刍甍者,下有袤有广,而上有袤无广.刍,草也.甍,屋盖也.”今有底面为正方形的屋脊形状的多面体(如图所示),下底面是边长为2的正方形,上棱,EF∥平面ABCD,EF与平面ABCD的距离为2,该刍甍的体积为( )A.6B.C.D.12【解答】解:如图,作FN∥AE,FM∥ED,则多面体被分割为棱柱与棱锥部分,则该刍甍的体积为:.故选:B.4.(2020•全国Ⅰ卷模拟)已知O为等腰直角三角形POD的直角顶点,以OP为旋转轴旋转一周得到几何体,CD是底面圆O上的弦,△COD为等边三角形,则异面直线OC与PD所成角的余弦值为( )A.B.C.D.【解答】解:设OP=r,过点D作OC的平行线交与CD于行的半径于点E,则OE=OC=CD=OD=r,PC=PD,∴∠PDE(或其补角)为其异面直线OC与PD所成角,在△PDE中,PE=PO,DE=r,∴cos∠PDE.故选:B.5.(2020•合肥模拟)已知四棱锥S﹣ABCD中,四边形ABCD为等腰梯形,AD∥BC,∠BAD=120°,△S AD是等边三角形,且SA=AB=2,若点P在四棱锥S﹣ABCD的外接球面上运动,记点P到平面ABCD 的距离为d,若平面SAD⊥平面ABCD,则d的最大值为( )A.1B.2C.1D.2【解答】解:依题意,,取BC的中点E,则E是等腰梯形ABCD外接圆的圆心,F是△SAD的外心,作OE⊥平面ABCD,OF⊥平面SAB,则O是人锥S﹣ABCD的外接球的球心,且OF=DE=3,AF=2,设四棱锥S﹣ABCD的外接球半径为R,则R2=SF2+OF2=13,则OE=DF=1,∴当四棱锥S﹣ABCD的体积最大时,.故选:A.6.(2020•葫芦岛模拟)正方体ABCD﹣A1B1C1D1的棱长为2,在A,B,C,D,C1,D1这六个顶点中,选择两个点与A1,B1构成正三棱锥P,在剩下的四个顶点中选择两个点与A1,B1构成正三棱锥Q,M表示P 与Q的公共部分,则M的体积为( )A.B.C.D.1【解答】解:如图,由题意,P和Q分别为三棱锥B1﹣A1BC1和三棱锥A1﹣AB1D1,设平面A1BC1与平面AB1D1的交线为EF,则M为四面体A1B1EF.取A1B1的中点O,连接ED,可得EO⊥平面A1B1F,又.则M的体积V.故选:A.7.(2020•广东二模)如图,在矩形ABCD中,已知AB=2AD=2a,E是AB的中点,将△ADE沿直线DE翻折成△A1DE,连接A1C.若当三棱锥A1﹣CDE的体积取得最大值时,三棱锥A1﹣CDE外接球的体积为π,则a=( )A.2B.C.2D.4【解答】解:在矩形ABCD中,已知AB=2AD=2a,E是AB的中点,所以:△A1DE为等腰直角三角形;斜边DE上的高为:A′K DE a;要想三棱锥A1﹣CDE的体积最大;需高最大,则当△A1DE⊥面BCDE时体积最大,此时三棱锥A1﹣CDE的高等于:DE a;取DC的中点H,过H作下底面的垂线;此时三棱锥A1﹣CDE的外接球球心在OH上;∵三棱锥A1﹣CDE外接球的体积为π;所以球半径R;如图OH2=OC2﹣CH2;①A′O2=A′G2+GO2;②即:R2﹣a2=OH2;③R2=(a﹣OH)2+(a)2;④联立③④可得a;故选:B.8.(2020•新疆模拟)半正多面体亦称“阿基米德多面体”,是由边数不全相同的正多边形为面的多面体,体现了数学的对称美.如图,将正方体沿交于一顶点的三条棱的中点截去一个三棱锥,如此共可截去八个三棱锥,得到一个有十四个面的半正多面体,它们的棱长都相等,其中八个为正三角形,六个为正方形,称这样的半正多面体为二十四等边体.一个二十四等边体的各个顶点都在同一个球面上,若该球的表面积为16π,则该二十四等边体的表面积为( )A.B.C.D.【解答】解:∵二十四等边体的外接球的表面积为16π,设其半径为r,则4πr2=16π,解得r=2,设O为球心,依题意得四边形A,B,C,D分别为正方体侧棱的中点,∴四边形ABCD是正方形,AB2,∴二十四等边体的棱长为2,∴二十四等边体的表面积为:S24+8.故选:C.二.多选题(共4小题)9.(2020春•宝应县期中)如图所示,P为矩形ABCD所在平面外一点,矩形对角线交点为O,M为PB的中点,下列结论正确的是( )A.OM∥PD B.OM∥平面PCD C.OM∥平面PDA D.OM∥平面PBA【解答】解:对于A,由于O为BD的中点,M为PB的中点,则OM∥PD,故正确;对于B,由于OM∥PD,OM⊄平面PCD,PD⊂平面PCD,则OM∥平面PCD,故正确;对于C,由于OM∥PD,OM⊄平面PAD,PD⊂平面PAD,则OM∥平面PAD,故正确;对于D,由于M∈平面PAB,故错误.故选:ABC.10.(2020•山东模拟)已知α、β是两个不同的平面,m、n是两条不同的直线,下列说法中正确的是( )A.若m⊥α,m∥n,n⊂β,则α⊥βB.若α∥β,m⊥α,n⊥β,则m∥nC.若α∥β,m⊂α,n⊂β,则m∥nD.若α⊥β,m⊂α,α∩β=n,m⊥n,则m⊥β【解答】解:由α、β是两个不同的平面,m、n是两条不同的直线,知:在A中,若m⊥α,m∥n,n⊂β,则由面面垂直的判断定理得α⊥β,故A正确;在B中,若α∥β,m⊥α,n⊥β,则由线面垂直的性质得m∥n,故B正确;在C中,若α∥β,m⊂α,n⊂β,则m与n相交、平行或异面,故C错误;在D中,若α⊥β,m⊂α,a∩β=n,m⊥n,则由面面垂直的性质定理得m⊥β,故D正确.故选:ABD.11.(2020•市中区校级模拟)《九章算术》中将底面为直角三角形且侧棱垂直于底面的三棱柱称为“堑堵”;底面为矩形,一条侧棱垂直于底面的四棱锥称之为“阳马”;四个面均为直角三角形的四面体称为“鳖膈”.如图在堑堵ABC﹣A1B1C1中,AC⊥BC,且AA1=AB=2.下列说法正确的是( )A.四棱锥B﹣A1ACC1为“阳马”B.四面体A1C1CB为“鳖膈”C.四棱锥B﹣A1ACC1体积最大为D.过A点分别作AE⊥A1B于点E,AF⊥A1C于点F,则EF⊥A1B【解答】解:A.四边形A1ACC1为矩形,BC⊥平面A1ACC1∴四棱锥B﹣A1ACC1为“阳马”,故A正确;B.四面体A1C1CB中,△A1C1C、△A1BC、△A1BC1、△BCC1都是直角三角形,∴四面体A1C1CB为“鳖膈”,故B正确;C.当AC=BC时,四棱锥B﹣A1ACC1体积为:,故C错误;D.过A点分别作AE⊥A1B于点E,AF⊥A1C于点F,∵BC⊥AC,BC⊥AA1,AC∩AA1=A,∴BC⊥平面AA1C1C,又AF⊂平面AA1C1C,∴BC⊥AF,∵A1C∩BC=C,∴AF⊥平面A1BC,∴AF⊥A1B,∵AE∩AF=A,∴A1B⊥平面AEF,∵EF⊂平面AEF,∴EF⊥A1B,故D正确.故选:ABD.12.(2020•4月份模拟)如图,正方体ABCD﹣A1B1C1D1的棱长为a,线段B1D1上有两个动点E,F,且EFa,以下结论正确的有( )A.AC⊥BEB.点A到△BEF的距离为定值C.三棱锥A﹣BEF的体积是正方体ABCD﹣A1B1C1D1体积的D.异面直线AE,BF所成的角为定值【解答】解:对于A,根据题意,AC⊥BD,AC⊥DD1,AC⊥平面BDD1B1,所以AC⊥BE,所以A正确;对于B,A到平面CDD1C1的距离是定值,所以点A到△BEF的距离为定值,则B正确;对于C,三棱锥A﹣BEF的体积为V•EF•AB•BB1•sin45°a×a a a3,三棱锥A﹣BEF三棱锥A﹣BEF的体积是正方体ABCD﹣A1B1C1D1体积的,正确;对于D,异面直线AE,BF所成的角为定值,命题D错误;故选:ABC.三.填空题(共4小题)13.(2020•昆山市模拟)在长方体ABCD﹣A1B1C1D1中,AB=4,AD=4,AA1=3,若在长方体中挖去一个体积最大的圆柱,则此圆柱与原长方体的体积比为 .【解答】解:以ABCD为圆柱底面时,挖去的圆柱体积为:V1=π×22×3=12π,以ABB1A1为圆柱底面时,挖去的圆柱体积为:V29π,以ADD1A1为圆柱底面时,挖去的圆柱体积为:V39π,∴在长方体中挖去一个体积最大的圆柱,此圆柱与原长方体的体积比为:.故答案为:.14.(2020•珠海三模)在三棱锥P﹣ABC中,平面PAB⊥平面ABC,△ABC是边长为2的正三角形,△PAB 是以AB为斜边的直角三角形,则该三棱锥外接球的表面积为 .【解答】解:如图,在等边三角形ABC中,取AB中点F,设△ABC的中心为O,由AB=2,得CO CF.∵△PAB是以AB为斜边的等腰直角三角形,∴F为△PAB的外心,则O为棱锥P﹣ABC的外接球球心,则外接球半径R=OC.∴该三棱锥外接球的表面积为4π.故答案为:.15.(2020•中山区校级一模)如图是某机械零件的几何结构,该几何体是由两个相同的直四棱柱组合而成的,且前后、左右、上下均对称,每个四棱柱的底面都是边长为2的正方形,高为4,且两个四棱柱的侧棱互相垂直.则这个几何体有 20 个面,其体积为 32 .【解答】解:由对称性可知,该几何体共有20个面;该几何体的直观图如图所示,该几何体的体积为两个四棱柱的体积和减去两个四棱柱交叉部分的体积,两个四棱柱的体积和为:V=2×2×2×4=32,交叉部分的体积为四棱锥S﹣ABCD的体积的2倍,在等腰△ABS中,SB=2,SB边上的高为2,则SA,∴由该几何体前后、左右、上下均对称,知四边形ABCD为边长为的棱形,设AC的中点为H,连结BH,SH,由题意得SH为四棱锥S﹣ABCD的高,在Rt△ABH中,BH,又AC=SB=2,=222=4,∴S四边形ABCD×242,∵BH=SH,∴S四边形ABCD∴这个几何体的体积为V=3232.故答案为:20;32.16.(2020春•江西月考)在四棱锥P﹣ABCD中,底面ABCD为正方形,平面PAD⊥平面ABCD,且△PAD为等边三角形,若四棱锥P﹣ABCD的体积与四棱锥P﹣ABCD外接球的表面积大小之比为,则正方形ABCD的边长为 2 .【解答】解:如图,连接AC,BD交于点O1,取AD的中点为N,连接PN,设四棱锥P﹣ABCD外接球的球心为O,等边三角形PAD外接圆的圆心为O2,则O2为△PAD的重心,则|PO2||PN|,正方形ABCD外接圆的圆心为O1.因为PN⊥AD,平面PAD⊥平面ABCD,所以PN⊥平面ABCD,所以OO1∥PN,所以四边形OO1NO2为矩形,所以OO2=NO1.设正方形ABCD的边长为2x,则|PN|x,所以|PO2|x,|OO2|=x,所以四棱锥P﹣ABCD外接球的半径为|PO|2=|PO2|2+|OO2|2x2,x2,所以四棱锥P﹣ABCD外接球的表面积为S球4x2x x3,四棱锥P﹣ABCD的体积为V P﹣ABCD所以,即,解得x=1,所以正方形ABCD的边长为2.故答案为:2.四.解答题(共5小题)17.(2020•新课标Ⅰ)如图,D为圆锥的顶点,O是圆锥底面的圆心,△ABC是底面的内接正三角形,P 为DO上一点,∠APC=90°.(1)证明:平面PAB⊥平面PAC;(2)设DO,圆锥的侧面积为π,求三棱锥P﹣ABC的体积.【解答】解:(1)连接OA,OB,OC,△ABC是底面的内接正三角形,所以AB=BC=AC.O是圆锥底面的圆心,所以:OA=OB=OC,所以AP=BP=CP=OA2+OP2=OB2+OP2=OC2+OP2,所以△APB≌△BPC≌△APC,由于∠APC=90°.所以∠APB=∠BPC=90°所以AP⊥BP,CP⊥BP,AP,PC⊂平面APC,由于AP∩CP=P,所以BP⊥平面APC,由于BP⊂平面PAB,所以:平面PAB⊥平面PAC.(2)设圆锥的底面半径为r,圆锥的母线长为l,所以.由于圆锥的侧面积为π,所以,整理得(r2+3)(r2﹣1)=0,解得r=1.所以AB.由于AP2+BP2=AB2,解得则:.18.(2020春•房山区期末)如图,在四棱锥P﹣ABCD中,底面ABCD为矩形,平面PAD⊥平面ABCD,PA =PD=AD=2,AB=3.点M,N分别是AB,PC的中点.(Ⅰ)求证:MN∥平面PAD;(Ⅱ)求四棱锥P﹣ABCD的体积;(Ⅲ)在棱CD上是否存在一点T,使得直线BT⊥PC?请给出你的判断,并说明理由.【解答】(Ⅰ)证明:取PD中点Q,连接AQ,QN,在△PDC中,∵Q,N分别为PD,PC的中点,∴QN∥DC,且QN DC,∵ABCD为矩形,点M为AB的中点∴AM∥DC,且AM DC,∴QN∥AM,且QN=AM,得四边形AMNQ为平行四边形,∴MN∥AQ,∵MN⊄平面PAD,AQ⊂平面PAD,∴MN∥平面PAD;(Ⅱ)解:取AD的中点O,连接PO,∵PA=PD,∴PO⊥AD,又∵平面PAD⊥平面ABCD,平面PAD⊥平面ABCD=AD,∴PO⊥平面ABCD,则PO是四棱锥P﹣ABCD的高.∴;(Ⅲ)解:在棱CD上存在一点T,使得直线BT⊥PC.连接OC,在平面ABCD内过B作BT⊥OC,交CD于点T,则T即为满足条件的点.证明如下:由(Ⅱ)知PO⊥平面ABCD,∵BT⊂平面ABCD,∴PO⊥BT,又BT⊥OC,PO∩OC=O,∴BT⊥平面POC,而PC⊂平面POC,∴BT⊥PC.19.(2020•宜昌模拟)已知菱形ABCD 的边长为2,∠ABC =60°,对角线AC 、BD 交于点O ,平面外一点P 在平面ABCD 内的射影为O ,PB 与平面ABCD 所成角为30°.(1)求证:BD ⊥PA ;(2)点N 在线段PB 上,且,求的值.【解答】解:(1)证明:由题意PO ⊥面ABCD ,∴PO ⊥BD ,菱形ABCD 中,AC ⊥BD ,又PO ∩AC =O ,则BD ⊥面PAC ,所以BD ⊥PA .(2)因为PO ⊥面ABCD ,所以PB 与平面ABCD 所成角为∠PBO =30°,又菱形边长为2,∠ABC =60°,所以,PO =1,PB =2,CO =1,.,.设|PN |=λ|PB |=2λ,由V D ﹣PBC =V P ﹣DBC得D 到平面PCB 的距离为,D 到平面PNC 的距离也为..所以.20.(2020春•东城区校级月考)如图,在三棱柱ABC﹣A1B1C1中,BB1⊥平面ABC,AB⊥BC,AA1=AB=BC=2.(Ⅰ)求证:BC1⊥平面A1B1C;(Ⅱ)求异面直线B1C与A1B所成角的大小;(Ⅲ)点M在线段B1C上,且,点N在线段A1B上,若MN∥平面A1ACC1,求的值.【解答】解:(Ⅰ)证明:∵在三棱柱ABC﹣A1B1C1中,BB1⊥平面ABC,AB⊥BC,AA1=AB=BC=2.∴BC1⊥B1C,BB1⊥A1B1,A1B1⊥B1C1,∵BB1∩B1C1=B1,∴A1B1⊥平面BCC1B1,∵BC1⊂平面BCC1B1,∴A1B1⊥BC1,∵A1B1∩B1C=B1,∴BC1⊥平面A1B1C.(Ⅱ)以B为原点,BC为x轴,BA为y轴,BB1为z轴,建立空间直角坐标系,B1(0,0,2),C(2,0,0),A1(0,2,2),B(0,0,0),(2,0,﹣2),(0,﹣2,﹣2),设异面直线B1C与A1B所成角为θ,则cosθ,∴θ=60°.∴异面直线B1C与A1B所成角的大小为60°.(Ⅲ)解:A(0,2,0),C(2,0,0),C1(2,0,2),B(0,0,0),B1(0,0,2),A1(0,2,2),(﹣2,2,0),(0,0,2),设平面ACC1A1的法向量(x,y,z),则,取x=1,得(1,1,0),点M在线段B1C上,且,点N在线段A1B上,设M(a,b,c),N(x,y,z),λ,则3,λ,0≤λ≤1,即(2,0,﹣2)=3(a,b,c﹣2),(x,y﹣2,z﹣2)=λ(0,﹣2,﹣2),解得M(,0,),N(0,2﹣2λ,2﹣2λ),(,2﹣2λ,),∵MN∥平面A1ACC1,∴0,解得.∴的值为.21.(2020•重庆模拟)如图,四边形ABCD为平行四边形,点E在AB上,AE=2EB=2,且DE⊥AB.以DE 为折痕把△ADE折起,使点A到达点F的位置,且∠FEB=60°.(Ⅰ)求证:平面BFC⊥平面BDC;(Ⅱ)若直线DF与平面BCDE所成角的正切值为,求点C到平面DEF的距离.【解答】解:(Ⅰ)证明:∵DE⊥AB,∴DE⊥EB,DE⊥EF,∵EB∩EF=E,∴DE⊥平面BEF,∵BF⊂平面BEF,∴DE⊥BF,∵AE=2EB=2,∴EF=2,EB=1,∵∠FEB=60°,∴BF,∴EF2=EB2+BF2,∴FB⊥EB,∵DE∩BE=E,∴BF⊥平面BCDE,∵BF⊂平面BFC,∴平面BFC⊥平面BDC.(Ⅱ)解:以B为原点,BA为x轴,在平面ABCD中过B作AB的垂线为y轴,BP为z轴,建立空间直角坐标系,如图,设DE=a,则D(1,a,0),E(1,0,0),F(0,0,),(﹣1,﹣a,),∵直线DF与平面BCDE所成角的正切值为,∴直线DF与平面BCDE所成角的正弦值为,平面BCDE的法向量(0,0,1),∵直线DF与平面BCDE所成角的正切值为,∴|cos|,解得a=2,∴D(1,2,0),C(﹣2,2,0),∴(0,2,0),(﹣1,﹣2,),(﹣3,0,0),设平面EDF的法向量(x,y,z),则,取z=1,得(),∴点C到平面DEF的距离d.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:
⑴格式中的“数组名”与简单变量相同,可以是 任何合法的Visual Basic变量名。 ⑵数组必须先定义,后使用。 ⑶当用Dim语句定义数组时,该语句把数组中 的全部元素都初始化为0,而把字符串数组中 的全部元素都初始化为空字符串。 ⑷下标的下界默认为0,希望从1开始,可用 Option Base 语句定义。
4.定义一个三维数组,测试各维的上下界 Private Sub Form_Click() Dim A(1 To 100, 0 To 50, -3 To 4) Print LBound(A, 1), UBound(A, 1) Print LBound(A, 2), UBound(A, 2) Print LBound(A, 3), UBound(A, 3) End Sub
3.定义数组要注意的问题 ⑴数组名的命名与变量名相同,在命名时应尽 可能有一定的含义。 ⑵在同一过程中,数组名不能与变量名同名。 Private Sub Form_Click() Dim a(5) Dim a a=8 a(2) = 10 Print a, a(2) End Sub
⑶在定义数组时,每一维的元素个数必须时常 数,不能是变量或表达式。 Dim Arr2(n) × Dim Arr3(n + 5) × ⑷数组的类型通常在As子句中给出,缺省,定 义的是默认数组。也可用类型说明符。 ⑸无论哪中格式定义数组,下标必须小于上标。 ⑹数组的上界值和下界值,这可以通过LBound 和UBound函数来测试。 格式:LBound(数组[,维]) UBound(数组[,维])
结果: 1 0 -3 100 50 4
数组特点:
数组是一组变量的集合
数组中每一元素的类型相同
数组可以被声明为任一基本数据类型
数组用统一的数组名和下标来定义数组中的元素 数组有上、下界
数组表示:前例的数组用a命名
a(1) a(2) a(3) a(4) a(5) a(6)
二、默认数组
数据类型为Variant(默认)的数组称为默认数组。 可以通过下列两种方式定义默认数组: (1)在定义数组时不指明数据类型,格式为: Dim数组名([下界To]上界[,[下界To]上界]…) (2)把数组定义为变体数据类型,格式为: Dim数组名([下界To]上界[,[下界To]上界]…) As Variant
二、For Each…Next 语句
格式: For Each成员In数组 循环体 [Exit For] …… Next[成员]
For Each…Next语句专门用于数组或对象“集合”
说明: ⑴“成员”是变体变量,数组是数组名,没有 括号和下标。 ⑵用 For Each…Next 语句可以对数组元素进 行处理,包括查询、显示或读取 。 ⑶在数组操作中, For Each…Next 语句比
变量定义,它既没有维数,也没有上下界。
⑶“数组元素值”是需要赋给数组各元素的值, 各值之间以逗号分开。 Static Numbers As Variant Numbers = Array(1, 2, 3, 4, 5) ⑷数组变量不能是具体的数据类型,只能是变体
(Variant)类型。
⑸数组元素的值通过赋值语句或InputBox函数 读入数组,如果使用Array函数,则可使程序 达为简化。 ⑹Array 函数只适用于一维数组,不能对二维 或多维数组进行初始化。
格式: Option Base n
⑸“可使用的最大下标值”和“元素个数”的 区别。
2.第二种格式 格式:Dim 数组名([下界To]上界[,[下界To] 上界]…)As 类型名称 说明: 第二种格式实际上已包含了第一种格式,只 要省略格式中的“下界To”,即变为第一种格式。 例如:Dim A(8,3) Dim A(0 To 8,0 To 3) Dim A(8,0 To 3) 下标范围可以是-32768~32767 如:Dim Age(10 to 100)
第二节
1.概念
静态数组与动态数组
一、动态数组的定义
需要在运行时开辟内存区的数组叫做动态数组。
动态数组以变量作为下标值,在程序运行过 程中完成定义,通常分为两步:首先在窗体层、 标准模块或过程中用Dim或Public声明一个没有 下标的数组 (括号不能省略),然后在过程中用 ReDim语句定义带下标的数组。 格式: ReDim[Preserve]变量(下标)As 类型 注:缺省“Preserve” 数组中的内容将被清除 。
第 四 名
第 五 名
第 六 名
一、数组的定义
1.第一种格式 对于数组的每一维,只给出可以使用的 下标的最大值,即下标的上界。 (1)一维数组的定义 格式:Dim 数组名(下标上界) As类型名称 (2)二维数组的定义 格式:Dim 数组名(第一维下标上界, 第二维下标上界)。
例如:
Dim CJ(5) As String
4.数组元素的复制
单个数组元素可以像简单变量一样从一个数 组复制到另一个数组。 二维数组中的元素可以复制到另一个二维数 组中的某个元素,也可以复制到一个一维数 组中的某个元素,并且反之亦然。 如果要复制整个数组,则应使用For循环语句。
例8 .2 从键盘上输入10个整数,用冒泡排序法对这 10个数从小到大排序。 10 7 3
Option Base 1 (在窗体层) Sub Form_Click() Dim a(4, 4) As Integer For i = 1 To 4 For j = 1 To 4 a(i, j) = InputBox("Enter Data") Next j Next i End Sub
原来的数据分为4行4列,存放在数组a中。
第四节
数组的初始化
给数组的各元素赋初值称为数组的初始化, 可以用赋值语句或InputBox函数为数组元素赋值。 Array函数用来为数组元素赋值,即把一个 数据集读入某个数组。 格式:数组变量名=Array(数组元素值) 说明:
⑴“数组变量名”是预先定义的数组名,在“数组 变量名”之后没有括号。 ⑵“数组变量”,是因为它作为数组使用,但作为
例8.3 编写程序,试验Array函数
第五节
一、基本概念
控件数组
控件数组由一组相同类型的控件组成,这些 控件共用一个相同的控件名字,具有同样的 属性设置。 控件数组的每个元素都有一个与之关联的下 标,或称索引(Index),下标值由Index属性 指定。 控件数组元素的Index是一个只读属性,只能 在设计阶段设置,不能在运行时改变。
2.说明 ⑴在窗体层或模块层定义的动态数组只有类型,Dim语句直接定义数组。如果在标准 模块层或窗体层没有用Public后Dim声明过同名的 数组,则用ReDim定义的数组最多可达60维。 ⑶在一个程序中,可以多次用ReDim语句定义同 一个数组,随时修改数组中元素的个数,但不能 改变数组的维数。
例如:
Dim Test(2,3) As Integer 3行(0~2)、4列(0~3)占据12(3╳4)个整 型变量的空间(24个字节)。
Test(0,0) Test(0,1) Test(0,2) Test(0,3)
Test(1,0) Test(1,1) Test(1,2) Test(1,3) Test(2,0) Test(2,1) Test(2,2) Test(2,3)
2.数组元素的输入 一般用For循环语句及InputBox函数输入。 注意: ⑴当数组较小,可以用赋值语句来实现数组元 素的输入。 ⑵多维数组元素的输入通过多重循环来实现。 由于VB中的数组是按行存储的,因此把控制 数组第一维的循环变量放在最外层循环中。 ⑶当用InputBox函数输入数组元素时,如果要 输入的数组元素是数值类型,则应显示定义 数组的类型,或者把输入的元素转换为相应 的数值。
For i = 1 To 4 For j = 1 To 4 Print a(i, j); " "; Next j Print Next i
Option Base 1 (在窗体层) Sub Form_Click() Dim a(4, 4) As Integer For i = 1 To 4 For j = 1 To 4 a(i, j) = InputBox("Enter Data") Print a(i, j); " "; Next j Print Next i End Sub
第八章
第一节
第二节
数组
数组的概念
静态数组与动态数组
第三节
第四节
数组的基本操作
数组的初始化
第五节
控件数组
第一节 数组的概念
数组的概念
实际问题:在应用程序中要处理体育比赛的 成绩,如100米短跑。共有20人参加了比赛, 但只需记录前6名的成绩,并按其名次排列。 以前学过的处理数据的变量是各自独立的, 不能描述一组相关的数据之间的关系和位置。 对于上述问题采用数组结构来处理。
二、数组的清除和重定义
Erase语句用来重新初始化静态数组的元素, 或者释放动态数组的存储空间。
格式: Erase数组名[,数组名]… 说明: ⑴对静态数组,数值数组置0;字符串置空。 ⑵对动态数组,将删除整个数组所占用的内存。 ⑶对变体数组,每个元素将被重置为“空”。 ⑷在下次引用该动态数组之前,必须用ReDim 语句重新定义该数组的维数。
For…Next语句更方便,因为它不需要指明 结束循环的条件 。 ⑷不能在For Each…Next 语句使用用户自定 义类型数组。
Dim arr(1 To 20) Private Sub Form_Click() For i = 1 To 20 arr(i) = Int(Rnd * 100) Next i For Each arr_elem In arr If arr_elem > 50 Then Print arr_elem Sum = Sum + arr_elem End If If arr_elem > 95 Then Exit For Next arr_elem Print Sum End Sub