第6章程序控制结构_第1页
第6章程序控制结构_第2页
第6章程序控制结构_第3页
第6章程序控制结构_第4页
第6章程序控制结构_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 程序控制结构 6.1 典型考题分析与解答1在窗体上有两个文本框和一个命令按钮(Name属性分别为Text1、Text2和Command1),其中任意一个文本框用来输入一个正实数,单击命令按钮后,在另一个文本框输出该数的平方根。下面事件过程中的第一个If/End If结构的作用是:判断如果没有在某一个文本框中输入实数就单击命令按钮,则给出错误信息,然后结束程序的运行。第二个If/End If的作用是:判断在哪一个文本框中输入实数,以便在另一个文本框中输出结果。Private Sub Command1_ CliCk()If 1 ThenMsgBox(Please Input Data )E

2、xit SubEnd IfIf 2 ThenText1.Text=Str(Sqr(Val(Text2.Text)ElseText2.Text=Str(Sqr(Val(Text1.Text)End IfEnd Sub【分析】如果文本框的Text属性值为空,说明在文本框中没有输入数据,所以第一个空应填写语句:Text1.Text= And Text2.Text= 或:Text1= And Text2= 如果文本框的Text属性的长度为0,说明该文本框的Text为空串。从第二个If_Else_End If结构看出,如果条件为真,要将Text2中的内容放入Text1中。这个条件应是第一个文本框为空,所

3、以第二个空应填写语句:Len(Text1.Text)=0。注意不能写成Len(Text2.Text)=0,这样写虽然没有语法错误,程序运行时也不会出错,但不能实现题目所要求的功能。【解答】Text1.Text= And Text2.Text= 或:Text1= And Text2= ;Len(Text1.Text)=02下列语句中,语法正确的是。AR2=9 Bab = 3 Ca=b3 DLet a=5,b=10【分析】本题主要是考核学习者掌握赋值语句的书写格式。赋值语句的命令动词是Let,Let可以省略,其格式为Let=赋值语句功能是:先计算表达式的值,然后把表达式的值赋给赋值号左边变量。选项

4、A错误。赋值号左边是一个算术表达式,不符合赋值语句的格式要求。选项B错误。赋值号左边是一个关系表达式,不符合赋值语句的格式要求。选项C正确。赋值号右边是一个关系表达式“b3”,将b3的逻辑值赋给变量a。选项D错误。一条Let语句只能给一个变量赋值,该语句试图用一个赋值语句给两个变量赋值是错误的。若将该语句改为Let a = 5 : b = 10就正确了,实际上是用冒号把它分开而成为两条赋值语句。【解答】C3在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Command1_Click()For i=1 To 10x = 3For j=1 To 3x = x + 3Next

5、j Next iPrint xEnd Sub程序运行后,单击命令按钮,输出结果是。A9 B12 C90 D93【分析】本题主要是考核学习者掌握“For语句”的编写。题目中给出的是一个两层For循环的程序。语句“x=3”要执行10次。语句“x=x+3”要执行30次。但不管外循环执行几次,每开始一个内循环时,x总是被重新赋初值3。所以内循环最后一次执行时,x从初值3开始,执行3次加3的操作,最后x的值是12。【解答】B4下列程序的功能为输出如下的图形。程序不完整,请在1、2处填入所需内容。* Private Sub Command1_Click()For i=1 To 4Print Tab(10+

6、i);For j=1Print * ; 2PrintNext iEnd Sub【分析】本题主要是考核学习者掌握“双重循环结构”语句的编写。题目中给出这类测试的程序通常有一个双重循环结构,外循环决定打印输出行的数量,内循环决定每行输出的字符和字符个数,通常在Print语句中用一个Tab函数确定每行第一个字符的打印位置。程序的外循环变量i从1增加到4,步长为1,循环4次,因此打印输出4行。内循环的循环变量j,其初值和终值均不知道。我们从各行打印输出的字符均为8个“*”号,而内循环的Print语句每次打印输出1个“*”号,因此可以肯定,内循环的循环次数为8次。如果我们将循环变量j的初值定为1,终值定

7、为8,即可满足本题的要求。我们给出的【解答】为1 To 8。在进入内循环以前的Print语句的Tab函数是用来确定每行的打印的起始位置的,Print语句的Tab函数的实际变量为10+i,每次内循环,每行的打印随外循环变量i的增大而从第10列逐行右移一列。【解答】1 1 To 8; 2 Next j5下面程序执行后,x的值为。a = 10 : b = 0Do While a-ba=a1b=b+1x=x+a+bloopA30 B40 C50 D60【分析】本题主要是考核学习者掌握“Do While-loop控件结构”编程。题目中给出的程序用Do While-loop控件结构编程。Do While语

8、句的条件表达式是数字表达式ab,当ab为0时,结束循环。程序中的While循环执行5次,注意不是执行6次。每执行一次循环体,将a+b的值累加到x中,a+b的值总是10,所以最后x的值为50。【解答】C6假定有下面的程序段:For i=1 To 3For j=1 To iFor k=j To 3Printi=;i, j=; ,j, k=;kNext kNext jNext i这是一个三重循环程序,在这个程序中,外层、中层和内层循环的循环次数是。A3、6和14 B3、8和16C3、4和12 D3、9和18【分析】本题主要是考核学习者掌握“多重特环结构语句”的使用。在多重循环中,外层循环变化一次,内

9、层循环从头到尾执行一遍。该题是一个三重循环,而且中层循环变量的终值和内层循环变量的初值是随上一层循环的循环变量的变化而变化的,因此需要逐层加上计算后累加出各层的循环次数。模拟计算机的计算过程,计算各层的循环次数如下:(1)外层循环:i=1 To 3,循环次数为3(2)中层循环:当i=1时,j=1 To 1,循环1次当i=2时,j=1 To 2,循环2次当i=3时,j=1 To 3,循环3次中层循环的循环次数为6(3)内层循环:当j=1时,k=1 To 3,循环3次当j=1时,k=1 To 3,循环3次当j=2时,k=2 To 3,循环2次当j=1时,k=1 To 3,循环3次当j=2时,k=2

10、 To 3,循环2次当j=3时,k=3 To 3,循环1次内层循环的循环次数为14【解答】A7在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Command1_Click()b = 0Do Until b 0a = Val(InputBox(输入a的值)b = Val(InputBox(输入b的值)a = a+bLoopPrint aEnd Sub程序运行后,依次输入5、4、3、2、1、0、1、2,则输出结果是。A15 B12 C1 D3【分析】程序运行后,共输入4组数据,a依次取值为5、3、1、1,b依次取值为4、2、0、2。注意到循环条件是“b0”,所以当“a=1,b

11、=0”时,还要再输入第4组数据,这时“a=1,b=2”,计算出a的值为3,然后判断出b0为真,结束循环。还要注意到,a=a+b从形式上看是将b累加到变量a中,但实际上并不会起到累加的作用,因为变量a不断被赋予新值。这样,不管输入多少组数据,a的值仅仅是最后一组输入的数据之和。【解答】D8在窗体中添加命令按钮,编写如下程序:Private Sub Command1_Click()a=0For m=1 To 10a=a+1b=0For j=1 To 10 a=a+1b=b+2Next jNext mPrint a,bEnd Sub单击命令按钮,程序的执行结果为。A10, 20 B20, 110 C

12、110, 20 D200, 110【分析】每执行一次外循环,a的值增加11,执行10次外层循环后a的值为1110=110,B在每次执行外层循环后的值都是相同的,b=102=20。【解答】C9阅读下面程序段:Dim Ln As Single, m As SingleDim k As Integer, t As Singlek = 0.0 : Ln = 0.0 : m = 1.0 : t = 1.0x! = Val (InputBox(输入x的值)Dok = k + 1 : t = t *xs = m * t / k : Ln =Ln + sm = mLoop While k10Print Ln程

13、序段所计算的表达式是。Ax+x2/2+x3/3+x4/4+ +x10/10Bxx2/2+x3/3x4/4+ x10/10Cx+x2+x/3+x/4+ +x/10Dxx2+x/3x/4+ x/10【分析】这里的DoLoop循环的条件是k0If dc Then c=c+1d=Val(InputBox(请输入一个数)LoopPrint c+dEnd Sub运行时输入9,8,7,6,5,4,3,2,1,0,输出的结果是。A5 B6 C7 D8【分析】在进入循环前,程序为c赋了初值4,以后每次循环输入一个数,若输入的数大于c,则c增1,根据输入的数可以看出,输入9时大于c,c增1变成5,输入8时大于c,

14、c增l变成6,输入7时大于c,c增1变成7,以后所有输入的数都不大于c,c保持7不变,直到输入是0时,退出循环,退出循环时,d的值是0,因此c+d的值仍然为7。【解答】C11阅读下面的程序段:For i=1 To 2For j=i To 3For k=j To 4Print i*j*kNext kNext jNext i执行上面的程序段后,输出的数的个数是个。A24 B14 C12 D8【分析】循环体只有一条输出语句,每次输出一个数,循环体被执行几次,输出的数就有几个,所以解这个题实际上是看3层For循环执行的次数。多层For循环的执行规则是:外循环控制变量每取一个值,内循环控制变量要取遍所有

15、的值。倘若每一个循环的循环控制变量初值都是从1开始,显然,循环体会执行24次。现在的问题是,内循环控制变量的初值不仅不是从1开始,而且初值还是变化的。可以这样分析题目:当i=1时,j的取值是1、2、3,循环体共执行9次。即j=1时,k取值从1到4,循环体执行4次;j=2时,k取值从2到4,循环体执行3次;i=3时,k取值从3到4,循环体执行2次。当i=2时,j的取值是2、3,循环体共执行5次。即j=2时,k取值从2到4,循环体执行3次;j=3时,k取值从3到4,循环体执行2次。当i=3时,结束循环。所以循环体总共执行14次。【解答】B12阅读下面的程序:Private Sub Form_Cli

16、ck()Dim m,n As Integerm=InputBox(请输入m的值)m=Val(m)m1=mn=InputBox(请输入n的值)n=Val(n)n1=nDo While n0remin=m Mod nm=nn=reminLoopPrint m1,n1,mEnd Sub程序运行后,单击窗体,在输入对话框中分别输入16和24,则程序在窗体上的输出结果为。A16 24 4 B16 24 8 C24 16 6 D24 16 8【分析】本题提供的是用“辗转相除法”求两个整数的最大公约数的程序。一般来说,假定有两个整数m和n(mn),把m作为被除数,n作为除数,相除后余数为r。如果r不等于0,

17、则令m=n,n=r。再进行一次除法运算(以新的m作为被除数,n作为除数),得到新的r。如果r仍不等于0,则重复上述过程,直到r=0为止,此时的n就是两个数的最大公约数。在本题的Do While.Loop循环中,通过辗转相除求最大公约数,循环结束的条件是相除后余数为0,如果不为0,则一直“除”下去。这里用Mod运算符求余数,较大的整数作为被除数或者较小的整数作为被除数都可以得到正确结果,但整除的次数可能会不一样。例如,假定有两个数24和16,先把24作为被除数,16作为除数,相除后余数为8。再把原来的除数16作为下一次的被除数,将上一次得到的余数8作为下一次的除数,相除后余数为0。此时最后一次的

18、除数8就是所求的最大公约数。在本题的输入中,先输入16,再输入24,求出的最大公约数仍为8。【解答】B13阅读下面的事件过程:Private Sub Form_Click()Dim x As Integer , y As Integerx=Val(InputBox(输入09之间的整数)Select Case x Mod 3Case 0Command1.SetFocusCase 1Command2.SetFocusCase 2Command3.SetFocusEnd SelectEnd Sub单击窗体后,要使命令按钮Command2获得焦点,应该输入的数是中之一。A0、3、6、9 B1、4、7C

19、2、5、8 D3、6、9【分析】本题主要是考核学习者掌握对Select结构的理解和对Mod运算的掌握程度。先要懂得Select结构的执行规则:执行Select结构时,先对Select Case语句中的求值,然后依次测试该值与某一个Case里的中的值相匹配,遇到第一个相匹配的Case语句,则执行其后的语句序列。其次要知道表达式“x Mod 3”中Mod运算符的含义。Mod是求模运算,即求“x除以3”的余数。要使Command2获得焦点,应使“x Mod 3”的值为1,所以输入的数只能是1、4或7。【解答】B14阅读下面的程序段:k = 5Do While kt = t *kk = k lLoop

20、执行上面的程序段后,t的值为。【分析】使用Do Whileloop循环时,Do While语句中的可以用“数值表达式”作为循环的条件。若该数值表达式非0,表示True,这时要继续执行循环体;若该数值表达式的值为0,表示False,结束循环的执行。本题中Do While语句中的只是一个k。k的初值为5,每执行一次循环体,k的值减去1,最后当k的值为0时,结束循环。【解答】12015有一个Select Case结构,其头语句是Select Case x,要表示x的值小于10的Case语句的正确写法是。【分析】Case语句的格式是:Case 的形式可以是:单个数值常量或单个字符常量。,:用逗号分开的

21、值表列。 To :称之为To表达式,表示取值在两个数之间。Is 值:称之为Is运算关系表达式。根据题意,应使用最后一种形式来表示值域 。即写成Is10,注意不要写成x10。【解答】Case IS=10017执行下面程序段后,s的值为。s = 0 : k = 10Do While ks = s + 10k = k 2Loop【分析】While循环中的是一个数值表达式k,若k为非0,执行循环体;若k为0,则结束循环。本题中循环体被执行5次。注意每执行一次循环体,将10累加到变量s中,不是将k累加到变量s中。【解答】5018下面程序段的输出结果是。Dim x As Integer , num As

22、IntegerNum=12345: x=12345Do While x1x=num Mod 10num=num10Print xLoop【分析】“Mod”为求模运算。Num Mod 10得到num除以10后的余数。“”为整数除法运算。运算的结果为整型数或长整型数(小数位无条件去掉)。可以这样来阅读程序:第1次执行循环体,x的值为5,num的值变为1234,输出数值5。第2次执行循环体,x的值为4,num的值变为123,输出数值4。第3次执行循环体,x的值为3,num的值变为12,输出数值3。第4次执行循环体,x的值为2,num的值变为1,输出数值2。第5次执行循环体,x的值为1,num的值变为

23、0,输出数值1。 程序段的功能是:将整型数num逆序输出。【解答】5432119在窗体中添加一个命令按钮,然后编写如下程序:Private Sub Form_Click()Dim iFor i=1 To 13 Step 2i=i+1Print i;Next iEnd Sub单击命令按钮,程序的执行结果为。A2 4 6 8 10 12 B1 3 5 7 9 11 13C2 5 8 D2 5 8 11 14【分析】Print语句后有分号,显示完本语句结果不换行,继续显示下一个结果,本题中循环变量i的值在循环体中增加1。【解答】D20在窗体中添加一命令按钮,并在命令按钮中编写如下代码:Private Sub Command1_Click()Dim a As Singlea=-1.b=Int(a):c=Sgn(a):d=Abs(a):e=Fix(a)If ab Then Print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论