高考信息技术大一轮优选课件+习题 47.docx
《高考信息技术大一轮优选课件+习题 47.docx》由会员分享,可在线阅读,更多相关《高考信息技术大一轮优选课件+习题 47.docx(12页珍藏版)》请在冰豆网上搜索。
高考信息技术大一轮优选课件+习题47
第4节 VB基本语句
模拟演练
A组 学考题组
1.现要求刚好输出1至100内所有能被7整除的数字,下列哪段程序不能实现( )
A.Fori=1To100
IfiMod7=0Then
List1.AddItemi
Nexti
B.Fori=7To100Step7
List1.AddItemi
Nexti
C.i=1:
s=7
DoWhiles<=100
List1.AddItems
i=i+1
s=i*7
Loop
D.s=0
DoWhiles<=100
s=s+7
List1.AddItems
Loop
答案 D 本题考查对循环结构的掌握。
A选项利用了枚举法,i从1循环到100,步长为1,当Mod7为0(即i能被7整除)时输出i,可以实现;B选项i从7开始循环到100,步长为7,输出的刚好也是所有100内能被7整除的数字;C选项利用i的值,从1开始步长为1不断循环,每次输出i*7的值,直到s大于100停止,也可以实现;D选项看似没有问题,但是s超出100后的第一个能被7整除的数字还是会被输出来,程序有缺陷。
2.阅读下面的程序:
PrivateSubCommand1_Click()
a=Val(Text1.text)
b=Val(Text2.text)
DoWhileaModb<>0
r=aModb
a=b
b=r
Loop
Text3.text=str(b)
EndSub
在Text1、Text2中分别输入30、6,则Text3中的值为( )
A.1B.3C.6D.9
答案 C 本题考查辗转相除法求最大公约数。
将30、6代入程序即可。
3.有如下VisualBasic程序:
PrivateSubCommand1_Click()
DimsumAsDouble,xAsDouble
sum=0
n=0
Fori=1To5
x=n/i
n=n+1
sum=sum+x
Next
EndSub
该程序通过For循环计算sum的值,下列表达式的值与sum相等的是( )
A.1+1/2+2/3+3/4+4/5B.1+1/2+2/3+3/4
C.1/2+2/3+3/4+4/5D.1+1/2+1/3+1/4+1/5
答案 C 本题考查程序阅读。
程序运行过程如下:
i
x=n/i
执行n=n+1后的n
sum
1
0
1
0
2
1/2
2
1/2
3
2/3
3
1/2+2/3
4
3/4
4
1/2+2/3+3/4
5
4/5
5
1/2+2/3+3/4+4/5
退出循环
4.下面程序段用于计算分段函数y=
的值,不正确的是( )
A.Ifx<0Then
y=0
ElseIfx<1Then
y=1
Else
y=x
EndIf
B.Ifx<0Then
y=0
Else
Ifx<1Then
y=1
Else
y=x
EndIf
EndIf
C.Ifx<0Theny=0
Ifx<1Theny=1
Ifx>=1Theny=xD.Ifx<0Theny=0
Ifx>=0andx<1Theny=1
Ifx>=1Theny=x
答案 C 本题考查VB选择结构语句的书写。
C选项中语句条件范围存在重叠。
5.有如下VisualBasic程序段:
s=0
Fori=1To20Step2
Ifs<15Then
s=s+i
EndIf
Nexti
以上程序执行结束后,变量s和i的值分别为( )
A.9 20B.16 7C.16 21D.15 22
答案 C 本题主要考查的是VB中的循环语句和选择语句,具体计算过程如下:
i
1
3
5
7
…
21
s
1
4
9
16
16
16
由表可知,本题选C。
6.阅读如下程序段,程序运行结束时,k和s的值分别是( )
k=0:
s=0
DoWhilek<=10
s=s+1
k=k+1
Loop
A.k=10,s=10B.k=10,s=11C.k=11,s=10D.k=11,s=11
答案 D 本题主要考查VB循环结构。
Do-Loop循环是未知循环次数的循环,只要循环变量的值满足条件,就一直循环。
程序段中,k和s的初值都为0,每循环一次,s自加1,循环变量k从0开始,一直到k=10,进入最后一次循环,故一共循环11次,所以程序结束时,s=11。
k=10,进入最后一次循环,执行循环体,k=k+1,所以k=11,当k=11时,不符合k≤10,故循环停止。
所以程序结束时,k=11,s=11。
7.斐波那契数列是指从第3项开始,每一项的值为前两项之和。
如:
1,1,2,3,5,8,13,…,下面程序用于求斐波那契数列的第n项的值
Dimf1aslong,f2aslong,faslong
n=val(Text1.Text)
f1=1
f2=1
Fork=3ton
Nextk
Label1.Caption=“斐波那契数列第”+str(n)+“项的值为”+str(f)
方框中的代码由以下三部分组成:
①f2=f ②f1=f2 ③f=f1+f2
代码顺序正确的选项是( )
A.①②③B.③②①C.②③①D.②①③
答案 B 题中已经给出前两项f1=1,f2=1,从第3项开始进入循环。
循环的目的是对f1和f2求和后,更新两个变量f1,f2,代入再求新的和,如图所示。
因此三条语句的顺序是:
①求和:
f=f1+f2,②更新f1的值:
f1=f2,③更新f2的值:
f2=f,故选B。
8.下面VB程序的功能是:
程序运行时,在文本框Text1中输入正整数n,单击命令“生成”按钮Command1后,在文本框2中输出n,n-1,…,2,1,2,…,n-1,n。
若n=6,在文本框Text2中输出“65432123456”。
程序运行界面如图所示。
实现上述功能的VB程序代码如下,但加框处语句有误,请改正。
PrivateSubCommand1_Click()
DimiAsInteger,nAsInteger,sAsString
n=Val(Text1.Text)
s=“”
Fori=1To2*n’①
Ifi<=nThen
s=s+Str(n-i+1)
Else
s=s+Str(2*i-n)’②
EndIf
Nexti
Text2.Text=s
EndSub
(1)程序中①处应改为 ;
(2)程序中②处应改为 。
答案
(1)2*n-1
(2)s=s+Str(i-n+1)
解析 本题主要考查VB循环结构。
程序实现过程:
在Text1中输入n的值,在Text2中输出结果。
当输入的值为n时,一共输出2*n-1个值。
从n开始依次减小1,直到输出1后,开始递增,依次增大1,直到输出n,停止。
用变量i的值来控制循环次数。
当i≤n时,每次输出n-i+1,当i>n时,每次输出2*i-n。
因为输出在文本框当中,所以需要将数值转换为字符串。
(1)当输入值为n时,输出的值的个数应该为2*n-1个,所以i的范围为1To2*n-1。
控制循环次数。
(2)当i≤n时,输出值依次减小,当i>n时,输出值越来越大。
所以②处应改成s=s+Str(i-n+1)。
B组 选考题组
1.有如下VB程序:
PrivateSubCommand1_Click()
Dima(1To5)AsInteger
a(5)=Val(Text1.text)
Fori=4To1Step-1
a(i)=a(i+1)\2
Nexti
Label1.caption=str(a
(1))
Endsub
在文本框Text1中输入“100”,单击命令按钮Command1后,标签Label1中显示的内容是( )
A.25B.6C.12D.50
答案 B 本题考查程序阅读。
程序执行过程中数组a变化如下:
i
数组a初始:
0,0,0,0,100
4
0,0,0,50,100
3
0,0,25,50,100
2
0,12,25,50,100
1
6,12,25,50,100
2.贝贝有n个桃子,吃完后每三个桃核可以换一个桃子,编写一个程序计算贝贝总共能够吃到几个桃子。
(1)若贝贝总共有7个桃子,则他最后可以吃到 个桃子。
(2)修改程序中的错误。
程序代码如下:
PrivateSubCommand1_Click()
DimnAsInteger,ansAsInteger
n=Val(Text1.Text)
ans=n
DoWhile n>3 ’①
ans=ans+n\3
n=n\3 ’②
Loop
Label2.Caption=“总共能吃到的桃子数为:
”+Str(ans)+“个”
EndSub
答案
(1)10
(2)①n>=3 ②n\3+nmod3
解析 本题考查利用程序实现问题模拟的能力。
首先题中最为关键的变量是n,n表示什么呢?
可以认为是初始的桃子数,但实际上n是桃核数量,只不过刚好初始的桃子和桃核数量是相等的,于是循环判断n是否大于等于3。
若不是则继续循环。
若是,则需要加上换过的桃子,而n的值变成了换过的桃子产生的桃核和原先换桃时多出来的桃核数。
3.编写VB程序,实现如下功能:
输入年月日,求该日是这一年的第几天。
程序运行时,在文本框“TextNian”中输入年,在文本框“TextYue”中输入月,在文本框“TextRi”中输入日。
单击“点击计算”按钮“ButtonRun”进行计算,结果输出到文本框“TextAnswer”中。
程序界面如图所示。
请回答下列问题:
(1)应用程序界面设计时,设置文本框“TextNian”的显示内容为空,应设置该对象 的属性为空白。
(2)为实现上述功能,请在划线处填写合适的代码。
PrivateSub ① ()
DimnianAsInteger,yueAsInteger,riAsInteger
DimansAsInteger,iAsInteger
Dima(1To12)AsInteger’a(i)存储第i个月的天数
a
(1)=31:
a
(2)=28:
a(3)=31:
a(4)=30
a(5)=31:
a(6)=30:
a(7)=31:
a(8)=31
a(9)=30:
a(10)=31:
a(11)=30:
a(12)=31
nian=Val(TextNian.Text)
yue=Val(TextYue.Text)
ri=Val(TextRi.Text)
Fori=1Toyue-1’依次加上之前每个月的天数
ans= ②
Nexti
ans=ans+ri’加上当月的天数
Ifyue>2Then’包含2月时,判断是否闰年,修正总天数
IfnianMod400=0Thenans=ans+1
IfnianMod4=0AndnianMod100<>0Thenans=ans+1
EndIf
③ =Str(ans)
EndSub
①处代码为 。
②处代码为 。
③处代码为 。
答案
(1)Text
(2)①ButtonRun_Click
②ans=ans+a(i)
③TextAnswer.Text
解析
(1)略。
(2)①注意“点击计算”按钮的名称为“ButtonRun”,事件为单击。
②累加前yue-1个月的天数,其中若包含2月份,暂以28天计算,若yue>2且为闰年,则之后再加上1天。
③注意文本框的名称为“TextAnswer”。
4.(2016台州六校第一学期期末选考科目联考,16,4分)编写VB程序,实现如下功能:
在文本框Text1中输入筛选关键词“ca”,单击“筛选”按钮Command1,在列表框List1所列字符串中查找左边与“ca”相匹配的字符串,并在列表框List2中输出(运行效果如图所示);否则,在列表框List2中显示“无筛选结果”。
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dima(1To20)AsString ’用于存储20个字符串
’将20个字符串分别保存赋值给数组元素a
(1)、a
(2)、a(3)、a(4)、…、a(19)、a(20),并在列表框List1中显示
PrivateSubForm_Load()
’代码略
EndSub
PrivateSubCommand1_Click()
DimsAsString,nAsInteger,iAsInteger
DimflagAsBoolean ’变量flag用于标记是否在数组a中筛选到左边与s匹配的字符串
List2.Clear ’筛选时清空上次筛选结果
s=Text1.Text
n=Len(s)
flag=False
Fori=1To20
IfMid(a(i),1,i)=sThen’
(1)
List2.AddItema(i)
flag=True
EndIf
Nexti
Ifflag=FalseThen
List2.AddItema(20)’
(2)
EndIf
EndSub
答案
(1)Mid(a(i),1,n)=s
(2)List2.AddItem“无筛选结果”
解析 本题主要考查数组与函数的运用。
(1)n为输入的字符串的长度。
只需要将a
(1)到a(20)每个数组元素中的字符串第一个位置起的n个字符长度的字符子串与输入的字符串进行比较。
若两个字符串相同,则输出数组元素中的字符串。
所以用mid函数截取数组元素中字符串的子串。
(2)根据题意,若flag=false,则未查找到匹配的字符串,应输出“无筛选结果”。