(2)then
T=a
(1)
A
(1)=a
(2)
A
(2)=t第一个if执行完后,a
(1)>a
(2)
Endif
Ifa
(2)>a(3)then
M=a
(2)第二个if成立,a
(1)>a
(2)>a(3)
Elseifa
(1)>a(3)then隐含a
(2)<=a(3)
第三个if成立a
(1)>a(3)>a
(2)
M=________a(3)
Else
M=_____a
(1)____a(3)>a
(1)>a
(2)
Endif
Print“中间数是”:
m
25.把数组a的值全部赋给数组b
B(0)=a(0)
B
(1)=a
(1)…
B(n)=a(n)
Fori=1ton
B(i)=a(i)
Next
总结第三天授课内容
一、单分支:
if….then….
二、双分支:
if….then….else…
Ifx>ythen
Max=x
Else
Max=y
Endif
三、多分支块结构
If条件1then
语句块1
Elseif条件2then
语句块2
Elseif条件3then
语句块3
。
。
。
Else
语句块n+1
Endif
四、select..case
Selectcase测试表达式selectcasex
Case表达式列表1case1,3,5
。
。
。
Case表达式列表2case7to20
。
。
。
。
Caseelsecaseis>21
..
Endselect
表达式列表:
逗号(多个具体的值),atob(闭区间,大于等于a小于等于b),is关系运算符表达式(开区间)
五.For循环
1、特点:
循环次数已知:
(终值-初值)/步长+1
2格式:
for循环变量=初值to终值step步长
循环体
Next循环变量
3、过程:
Sum=0
Fori=1to100
Sum=sum+Isum=sum+1sum=sum+i*Isum=sum+1/i
Next
Eg.sum=1-2+3-4+5-6….-100
Sign=1
Sum=0
Fori=1to100
Sum=sum+i*sign
Sign=-sign
Next
Eg.求10!
Y=1
Fori=1to10
Y=y*i
Next
六、while循环
1、格式while条件
循环体
Wend
2、特点:
(1)先判断条件,再执行循环体循环体最少执行0次
(2)循环次数未知
七、do..loop循环
1、先执行后判断,条件成立继续循环
Do
循环体
Loopwhile条件
2、先执行后判断,条件不成立继续循环
Do
循环体
Loopuntil条件
3、先判断后执行,条件成立继续循环
Dowhile条件
循环体
Loop
4、先判断后执行,条件不成立继续循环
Dountil条件
循环体
Loop
5、
Do
循环体
loop
第十一章控制结构
5、在窗体上画一个名称为Command1的命令按钮,并编写以下程序:
PrivateSubCommand1_Click()
Dimn%,b,t
t=1:
b=1:
n=2
Do
b=b*n
t=t+bt的值累加求和
n=n+1n的值每次加1,n的值取决于循环体执行次数
LoopUntiln>9
Printt
EndSub
第一次执行循环(n=2),b=2,t=1+2!
n=3
第二次循环(n=3),b=2*3,t=1+2!
+3!
第?
次执行循环体(N=9),b=b*n,t=t+b,n=n+1=10,until成立此程序计算并输出一个表达式的值,该表达式是
A)9!
B)10!
C)1!
+2!
+…+9!
D)1!
+2!
+…+10!
13、下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出。
例如:
输入7685,则输出5867,输入1000,则输出0001。
请填空。
PrivateSubCommand1_Click()
DimxAsInteger
x=InputBox(“请输入一个正整数”)
Whilex>0
PrintxMod10;
x=x\10
Wend
EndSub
假设x=7685,
第一次条件判断成立(x=7685),输出5,x=768
第二次判断成立(x=768),输出8,x=76
第三次判断成立(x=76),输出6,x=7
第四次判断成立(x=7),输出7,x=0
第五次判断不成立(x=0)
(4)多重循环
循环体中又保护循环结构,解题思路:
外重循环的功能(外重循环变量的含义);内重循环功能及内重循环变量的含义
1、在窗体上画一个命令按钮和一个标签,其名称分别为Command1和Label1,然后编写
如下的事件过程
Private Sub Command1_Click()
conter = 0
For I = 1 To 4
For J = 6 To 1 Step -2
conter = conter + 1
Nextj
Next I
Label1.Caption = Str(conter)
End Sub
1、外重循环第一次判断(i=1),进入内重循环
(1)内重循环第一次判断(j=6),conter=0+1,j=6-2=4
(2)内重循环第二次判断(j=4),conter=1+1,j=4-2=2
(3)内重第三次判断(j=2),conter=1+1+1,j=2-2=0
(4)第四次判断(j=0),不成立,到外重循环,i=1+1=2
2、外重循环第二次判断(i=2),进入内重循环
(1)j=6,conter=3+1,j=4
(2)j=4,conter=4+1,j=2
(3)j=2,conter=5+1,j=0
(4)j=0,循环结束,i=2+1=3
3、外重循环第3此判断
总结:
因为外重循环fori=1to4,外重循环执行4次;每做一次外重循环,内重循环执行3次(forj=6to1step-2);循环体总共执行12次
程序运行后,单击命令按钮,标签中显示的内容是
A)11 B)12 C)16 D)20
2、请阅读程序:
PrivateSubForm_Click()
m=1
Fori=4To1Step-1
PrintStr(m);
m=m+1
Forj=1Toi
Print”*”;
Nextj
Print
Nexti
EndSub
两重循环中打印图形:
外重循环表示第i行,内重循环用来表示列
程序运行后,单击窗体,则输出结果是
A)1**** B)4**** C)**** D)*
2*** 3*** *** **
3** 2** ** ***
4* 1* * ****
3、有如下事件过程
PrivateSubForm_click()
DimnasInteger
x=0
n=InputBox(“请输入一个整数”)
Fori=1ton
Forj=1toi
x=x+Ix=x+j
Nextj
Nexti
Printx
EndSub
1、第一次判断(i=1)1、i=1
Forj=1to1
X=x+1
Nextj
2、第二次判断i=2
Forj=1to2
X=x+2
Nextj
3、第三次判断i=3
Forj=1to3
X=x+3
Nextj
X=1+2+2+3+3+3
1、i=1
Forj=1to1
X=x+j
Nextj
2、i=2
Forj=1to2
X=x+j
Nextj
X=1+(1+2)
X=1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)
程序运行后,单击窗体,如果在输入对话框中输入3,则在窗体上显示的内容是
A)13B)14C)15D)16
4、假定有一下程序段
For i=1 To 3
For j=5 To 1 Step -1
Print i*j
Next j
Next i
则语句Printi*j的执行次数是
A)15B)16C)17D)18
第七章数组(理论4个课时,上机4个课时)
主要考点:
一维数组和二维数组中元素的操作;利用循环操作数组元素;控件数组的建立和操作
主要内容
1、数组定义:
把一组相同类型的数据按照一定的顺序排列存储在计算机中
(1)数组一般形式:
S(n)
其中S称为数组名,n是下标。
一个数组可以含有若干个下标变量(或称数组元素),下标用来指出某个数组元素在数组中的位置,
●表示元素:
数组名(下标)
S(8)代表S数组中的下标为8的元素,
s
(1)=s
(2)+s(3)
(2)数组定义格式
Dim数组名(下标上界)As类型名称
●完整定义格式:
dim数组名(下标下界to下标上界)as类型
Eg.Dima(3to9)asinterger元素:
a(3),a(4),a(5)…a(9)
a(3)
a(4)
a(5)
a(6)
a(7)
a(8)
a(9)
Dima(-2to3)asstring元素:
a(-2),a(-1),a(0),a
(1)..a(3)
●省略上界:
dim数组名(下界)As类型,默认上界是0
Eg.Dima(4),元素:
a(0),a
(1),a
(2),a(3),a(4)
Eg.dimx(3)assingle,元素:
x(0),x
(1),x
(2),x(3)
●使用optionbasen语句定义默认上界,默认上界则为n
Eg.optionbase1
Dimb(3)asinterger元素:
b
(1),b
(2),b(3)
b
(1)
b
(2)
b(3)
Dim数组名(第一维下标上界,第二维下标上界)As类型名称
Eg.dima(1to3,1to2)asinterger
A(1,1)
A(1,2)
A(2,1)
A(2,2)
A(3,1)
A(3,2)
Eg.dimb(1to3,2to4)assingle
B(1,2)
B(1,3)
B(1,4)
B(2,2)
B(2,3)
B(2,4)
B(3,2)
B(3,3)
B(3,4)
说明:
在定义数组时,每一维的元素个数必须是常数,不能是变量或表达式。
合法数组定义:
●dim数组名(具体数值)
●Const常量名=值
Dim数组名(常量名)
错误定义方式:
使用变量dima=3
Dimb(a)asinterger
(2)数组分类
动态数组:
用变量作为下标定维的数组是动态数组。
动态数组元素个数可以改变
静态数组:
数组的维数用数值常数或符号常量作为下标定维的数组 元素个数不会发生改变
动态数组定义
首先在窗体、标准模块过程用dim声明一个没有下标的数组(有类型、有括号),然后在过程中用redim语句定义带下标的数组(没有类型)
在窗体或标准模块:
dim数组名()as类型
在过程中:
Redim数组名(下标)
●对动态数组重新定义时,只是改变元素个数,不能改变类型,可以多次重定义;数组名在重定义时必须相同
Eg.Optionbase1
Dima()asinterger
…
Redima(3)动态数组a的大小是3
。
。
。
。
Redima(3,3)动态数组a的大小是9
3、数组的基本操作
(1)输入:
使用循环语句,一般静态数据用For循环,动态数组用Do循环
●静态数组
Optionbase1
Dima(4)
Fori=1to4i代表数组元素下标
A(i)=inputbox(“”)循环体的作用对元素a(i)进行处理
next
使用Array函数,形成变体类型的静态数组
(2)输出:
●静态数组
Optionbase1
Dima(4)
Fori=1to4i代表数组元素下标
Form1.printa(i)循环体的作用对元素a(i)进行处理
next
一般使用For循环进入输出,动态数组常要用Lbound和Ubound配合确定下标的上下界
使用ForEach语句输出种类数组
4、 数组初始化
Array函数用来为数组元素赋值,即把一个数据集读入某个数组。
其格式为:
数组变量名=Array(值1,值2,值3,值4.。
。
。
)
注意,数组变量不能是具体的数据类型,只能是变体(Variant)类型。
Eg.Optionbase1
Dima
A=array(1,2,3,4)a
(1)=1,a
(2)=2,a(3)=3,a(4)=4
Eg.Dimaasvariant
A=array(1,2,3)
Eg.a=array(1,2,3)
5、控件数组
(1)定义:
有一组相同类型的控件,具有相同的名称,具有相同的属性,相应相同的事件,称为控件数组。
(2)index属性:
区别控件数组的数组
Eg.按钮控件数组,名称都是C1
第一个按钮C1(0),第二次按钮C1
(1),第三个C1
(2),
Eg。
文本框控件数组,名称text1
第一个文本框TEXT1(0),第二个文本框TEXT1
(1),第三个文本框TEXT1
(2)…..
括号中的编号由index值指定
(3)控件数组的建立
在设计阶段,通过复制——粘贴,
在设计阶段,创建第一个控件,把index属性修改为0
在代码窗口写入代码,load控件名(i)控件名必须一样
配合Load语句创建同类同名对象
6、foreach语句
Foreach变量名in数组名
循环体
next
历年考题
1、窗体上有一个名称为Option1的单选按钮数组,程序运行时,当单击某个单选按钮时,会调用下面的事件过程,下面关于此过程的参数Index的叙述中正确的是()
PrivateSubOption1_C1ick(IndexAsInteger)
…
EndSub
A)Index为1表示单选按钮被选中,为O表示未选中
B)Index的值可正可负
C)Index的值用来区分哪个单选按钮被选中
D)Index表示数组中单选按钮的数量
2、下面正确使用动态数组的是(A)
A)Dimarr()AsInteger
…
ReDimarr(3,5)
B)Dimarr()AsInteger
…
ReDimarr(50)AsString在重定义时不需要给出类型
C)Dimarr()
…
ReDimarr(50)AsInteger
D)Dimarr(50)
AsInteger在窗体或标准模块中定义数组不给长度
…
ReDimarr(20)
5、在窗体上画1个命令按钮,并编写如下事件过程:
使用两重循环处理二维数组时,往往外重循环用来控制行标,内重用来控制列表;循环体对每一个满足条件元素进行处理
PrivateSubCommand1_Click()
Dima(3,3)3行3列二维数组
Form=1To3
Forn=1To3
Ifn=mOrn=4-mThena(1,1)=2,a(2,2)=4,a(3,3)=6
A(m,n)=m+na(1,3)=a(3,1)=a(2,2)=4
else
a(m,n)=0
EndIf
Printa(m,n);
Nextn
Print
Nextm
EndSub
运行程序,单击命令按钮,窗体上显示的内容为
A)200
040
006
B)204
040
406
C)230
340
006
D)200
045
056
(22)语句Dima(-3To4,3To6)AsInteger定义的数组的元素个数是D
A)18B)28C)21D)32
(23)在窗体上画一个命令按钮,其名称为Command1,然后编写如下代码:
Option Base 1
Private Sub Command1_Click()
Dim a
a = Array(1, 2,34)a
(1)=1,a
(2)=2,a(3)=3,a(4)=4
j = 1
For i = 4 To 1 Step -1
s = s + a(i) * j
j = j * 10
Next i
Print s
End Sub
S=4*1+3*10+2*100+1*1000
程序运行后,单击命令按钮,其输出结果是
A)4321B)1234C)34D)12
6、假定通过复制,粘贴操作建立了一个命令按钮数组Command1,以下说法中错误的是D
A)数组中每个命令按钮的名称(Name属性)均为Command1
B)若未做修改,数组中每个命令按钮的大小都一样
C)数组中各个命令按钮使用同一个Click事件过程
D)数组中每个命令按钮的Index属性值都相同
7、在窗体上画一个命令按钮,名称为Command1,然后编写如下代码:
Option Base 0
Private Sub Command1_Click()
Dim A1(4) As Integer, A2(4) As Integer
For k = 0 To 2
A1(k + 1) = InputBox("请输入一个整数")
A2(3 - k) = A1(k + 1)
Next k
Print A2(k)
End Sub
程序运行后,单击命令按钮,在输入对话框中依次输入2、4、6则输出结果为
K=0,第一次判断(k=0),成立,a1
(1)=2,a2(3)=a1
(1)=2
第二次判断(k=1),成立,a1
(2)=4,a2
(2)=4
第三次判断(k=2)成立,a1(3)=6,a2
(1)=6,k=k+1=3
第四次判断(k=3)不成立,循环结束
Printa2(3)
A)0B)1C)2D)3
8、窗体上有Command1、Command2两个命令按钮。
现编写以下程序:
Option Base 0
Dim a() As Integer动态数组a
Private Sub Command1_Click()
m = InputBox("请输入一个正整数")
ReDim a(m)
End Sub
Private Sub Command2_Click()
m = InputBox("请输入一个正整数")
R