新设计信息技术基础课件 讲义 习题第二章 信息的加工第二章 第8节.docx
《新设计信息技术基础课件 讲义 习题第二章 信息的加工第二章 第8节.docx》由会员分享,可在线阅读,更多相关《新设计信息技术基础课件 讲义 习题第二章 信息的加工第二章 第8节.docx(20页珍藏版)》请在冰豆网上搜索。
新设计信息技术基础课件讲义习题第二章信息的加工第二章第8节
第8节 选择结构
知识点
目标
考试要求
算法的程序实现
①赋值语句、选择语句
②解析算法
c
必考+加试
1.选择语句是根据不同的判断结果,选择执行不同的语句。
2.选择语句条件表达式结果的数据类型是逻辑型,值只有True和False两个。
3.行IF语句必须在一行内写完,最后没有EndIf。
4.块IF语句的ElseIF语句部分和Else语句部分是可选的。
5.多选择结构ElseIF语句中,依次从上往下执行条件表达式,如果条件成立,就退出选择结构。
6.单分支结构语句:
If 条件表达式 Then 语句块1
7.双分支结构语句:
If 条件表达式 Then 语句块1 Else语句块2
8.多分支结构语句:
If条件表达式1Then
语句块1
ElseIf条件表达式2Then
语句块2
…………………
ElseIf条件表达式nThen
语句块n
Else
语句块0
EndIf
一个程序不论有多复杂,都是由顺序、选择和循环三种基本结构组成,整个程序可以看成一个大的顺序结构,其中的选择结构和循环结构可以简化为其中一条语句,而循环结构中可以包含选择结构,因此理解选择结构是理解整个程序的开始,是解程序填空和程序改错的开始。
本章内容试着来罗列各种可能碰到的选择结构,以帮助我们来理解这些语句的功能。
一、判断是否符合条件
在程序设计中,往往要找出符合某个条件的值,如查找某个数、验证码是否正确等,此时要用到选择结构,同时输出结论。
【例1】 对于正整数n,若是它平方数的尾部,则称n为同构数,判断一个两位数n是否是同构数的语句,请把下列语句补充完整。
If________________Then
Text1.Text=”是同构数”
Else
Text1.Text=”不是同构数”
End If
解析 本题考核的知识点选择结构的条件和Int函数的应用。
选择结构要关注他的条件,n是它平方数的尾部,n平方数的后两位数为n*nmod100。
答案 n*nmod100=n
[方法总结] 在解此类题目时,要紧紧抓住题目中描述的条件,并找到与条件相关的变量。
【变式训练】 判断当前计算得到验证码变量yzm(整型)与商品识别条码s(文本型)第13位是否相等语句,请把下列语句补充完整。
If________________Then
Text1.Text=”验证通过”
Else
Text1.Text=”验证不通过”
End If
解析 本题考核的知识点是选择结构的条件和Mid函数的应用。
条件为计算结果与最后一位字符相同。
但要注意类型的匹配,前者是数字,后者是数字。
答案 yzm=Val(Mid(s,13,1))
二、判断数x是否能整除数y
在求是否是素数,或者是质因子分解问题时,经常要判断两者是否能整除。
【例2】 输入一个身份证号码s(文本型),如果他的第17位是奇数,表示该公民的性别为男性,否则为女性,请把下列语句补充完整。
If________________Then
Text1.Text=”男性”
Else
Text1.Text=”女性”
End If
解析 本题考核的知识点是选择结构的条件和Mid函数的应用。
取出身份证号码s的第17位的表达式为Mid(s,17,1),但该表达式的值为文本,不能用于算术运算。
判断是否是奇数的条件是除以2后的余数是否为0。
答案 Val(Mid(s,17,1))Mod2<>0
[方法总结] 理解条件的含义是理解选择结构的题眼。
前提还要会表示各种关系。
【变式训练】 若某个在2至(n-1)之间数i能被数n整除,则判定是否是素数的标志变量flag(逻辑型)为假,请把下列语句补充完整。
If__________Then________
解析 本题考核的知识点是选择结构的条件和Mid函数的应用。
条件是被n整除,那么n是被除数。
答案 nModi=0 flag=False
三、判断条件的合理性
在文本框输入某个数值时,必须要符合题目的要求,如身份证号码的长度,二进制中的数字是否只有0和1,判断输入的数是否是整数等等。
【例3】 输出某个温度范围内(从低温t1到高温t2)气体的密度变化情况,在文本框Text1输入温度t1,在文本框Text2输入温度t2,要保证温度t1低于温度t2,把下列语句补充完整。
If__________________Then t=t1:
t1=t2:
t2=t
解析 本题考核的知识点是选择结构的条件和交换语句的应用。
从三条语句t=t1:
t1=t2:
t2=t来看,是要交换t1和t2的值,根据题目的要求,从低温t1到高温t2,因此若t1比t2大时,需要交换两者。
答案 t1>t2
[方法总结] 为了保证程序的可靠性和真实性,通常在程序开始部分要进行判断输入数值的有效性。
关键还是有效性的条件。
【变式训练】 在文本框Text1中输入密码送给变量psd,若密码的长度小于6位,需重新输入密码并退出程序,否则进行密码强度检测等操作。
请把下列语句补充完整。
If________________Then
Text1.Text=""
EndSub
Else
′其他代码略
EndIf
解析 本题考核的知识点是选择结构的条件和Len函数的应用。
条件是长度小于6。
答案 Len(psd)<6
1.判断一个三位数i是否是水仙花数的条件是:
他的各个位数字a、b、c的立方和与他本身是否相等,若相等为水仙花数,请把下列语句补充完整。
If________________Then
Text1.Text=”是水仙花数”
Else
Text1.Text=”不是水仙花数”
End If
解析 本题考核的知识点是选择结构的条件和表达式的应用。
条件是各个数字的立方和与他本身相等,那么各个数字的立方和又该如何表达。
答案 a^3+b^3+c^3=i
2.某单位用户系统登录界面中,正确的用户名和密码分别是“admin”、“Zjcx2018”,在文本框Text1中输入用户名user,文本框Text2中输入密码psd,根据输入情况,在标签Label1中输出相应信息,请把下列语句补充完整。
If____①____Then
Label1.Caption=”用户名不正确”
____②____Then
Label1.Caption=”密码不正确”
____③____
Label1.Caption=”欢迎登录!
”
EndIf
若用户名和密码均不正确,系统的提示信息是____④____
划线处代码为:
①__________________________________________________
②________________________________________________________________
③________________________________________________________________
④________________________________________________________________
解析 本题考核的知识点是多分支选择结构的条件和语法。
要特别注意条件与对应的语句。
多分支结构中,从上往下匹配条件,如果有一个条件匹配到了,就退出选择结构。
答案 ①user<>”admin” ②ElseIfpsd<>”Zjcx2018” ③Else 用户名不正确
3.若三条线段的长度分别为a、b、c,判断他们是否能构成三角形(任意两边之和大于第三边)的程序段如下,请把下列语句补充完整。
If_________________________Then
Text1.Text=”能构成三角形”
Else
Text1.Text=”不是构成三角形”
End If
解析 本题考核的知识点是选择结构的条件和多条件表达式的表示方法。
任意两边有几种可能性,他们之间是且还是或的关系。
答案 a+b>cAnda+c>bAndb+c>a
4.检测密码强度时,需判断他包含字符种类情况,判断当前字符ch是否是大写字母并记录是否含有大写字母的语句如下,请把下列语句补充完整。
If__________________Thendx=1
语句dx=1与dx=dx+1的区别是:
dx=1表示只要其中一次符合条件,dx的值就为1,相当于他的标志为真,而dx=dx+1的功能是计算符合条件的个数。
解析 本题考核的知识点是选择结构的条件和多条件表达式的表示方法。
条件是大写字母,在字母A与Z之间。
答案 ch>=”A”Andch<=”Z”
5.输入三个数a、b、c,经过某些操作,要求把这三个数按从大到小的顺序依次放在变量a、b、c中,请完善下列程序段
If____①____Thent=a:
a=b:
b=t
If____②____Thent=a:
a=c:
c=t
If____③____Thent=b:
b=c:
c=t
划线处代码为:
①________________________________________________
②______________________________________________________________
③______________________________________________________________
解析 从执行语句来看,是两个变量的交换,把握交换的条件。
答案 ①a
6.用计算机程序模拟扔1000次硬币的过程,用0和1分别表示硬币的正反两个面,用变量a表示0的个数,用变量b表示1的个数。
某次扔硬币的点数(用Rnd函数产生一个0或1的数),并统计个数的语句如下所示,请把下列语句补充完整。
If____①____Then
a=a+1
Else
____②____
End If
划线处代码为:
①__________________________________________________
②________________________________________________________________
解析 理解变量的含义及把握选择的条件。
答案 ①Int(Rnd()*2)=0或Int(Rnd()+0.5)=0 ②b=b+1
7.在文本框Text1、Text2和Text3分别输入年月日yy、mm和dd,判定输入的20世纪(1900-1999年)日期是否符合实际。
最后在标签Label1中输出该日期是否符合实际,请完善下列程序段。
flag=True
Ifyy<1990Oryy>1999Then
flag=False
ElseIf____①____Then
′月份mm在1-12之间
flag=False
EndIf
′以下程序段判断2月份的天数是否符合要求
Ifmm=2Andflag=TrueThen
IfyyMod400=0Or(yyMod100<>0AndyyMod4=0)Then ′闰年
If____②____Thenflag=False
EndIf
′以下程序段判断非2月份的天数是否符合要求
Ifmm<>2Andflag=TrueThen
Ifmm=1Ormm=3Ormm=5Ormm=7Ormm=8Ormm=10Ormm=12Then
If____③____
Thenflag=False
Else
Ifdd>30Thenflag=False
EndIf
EndIf
If____④____ThenLabel1.Caption=”相符”ElseLabel1.Caption=”不符”
划线处代码为:
①__________________________________________________
②________________________________________________________________
③________________________________________________________________
④________________________________________________________________
解析 要找到月份不正确的条件,最多天数不正确的条件,判断是否相符的条件。
答案 ①mm<1Ormm>12 ②dd>29③dd>31 ④flag=True
8.设计一个程序,根据输入的劳务报酬收入计算劳务报酬所得税。
解决此问题的流程图如图所示。
若要测试所有分支程序代码是否正确,下列测试数据中最恰当的一组是( )
A.500,830,4200B.500,800,4000
C.0,800,1000D.400,900,1200
答案 A
9.COD(化学需氧量)是衡量水质污染程度的重要指标之一,污水处理时根据污水的COD指标来计算COD去除剂的投放量。
当COD指标x小于50时,剂量为10,指标大于等于50且小于等于500时,剂量为1.2X/5,指标超过500时,剂量为1.5X/4。
在文本框Text1中输入COD指标,单击“计算”按钮Command1后,在文本框Text2中输出计算结果。
程序运行界面如图所示:
为实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimxAsSingle,sAsSingle
____①____
Ifx<50Then
s=10
ElseIfx<=500Then
____②____
Else
____③____
EndIf
Text2.Text=Str(s)
EndSub
划线处代码①_____________________________________________________
划线处代码②_____________________________________________________
划线处代码③______________________________________________________
答案 ①x=Val(Text1.Text) ②s=1.2*x/5 ③s=x/4*1.5
10.《浙江省电网销售电价表》中规定,不满1千伏“一户一表”居民用电价格,按以下标准计算:
月用电量在50千瓦时及以下部分,每千瓦时以0.538元计算;51~200千瓦时部分,则每千瓦时按0.568元计算;200千瓦时以上部分,每千瓦时按0.638元计算。
在文本框Text1输入用电量,在文本框Text2中输出相应的电费。
程序运行的界面如图所示:
为实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimxAsInteger
____①____
Ifx<0Then
Text2.Text=”用电量不能是负的!
”
ElseIfx<=50Then
Text2.Text=Str(0.538*x)
____②____Then
Text2.Text=Str(0.568*(x-50)+0.538*50)
Else
Text2.Text=Str(0.638*(x-200)+0.568*150+0.538*50)
EndIf
EndSub
划线处代码①_____________________________________________________
划线处代码②_____________________________________________________
答案 ①x=Val(Text1.Text) ②ElseIfx<=200
1.能表示“如果a,b同时大于等于0,那么x←2y”的VB语句是_________。
解析 注意两个条件的逻辑连接,注意大于等于符号的表达及2y的表达。
答案 Ifa>=0Andb>=0Thenx=2*y
2.该数是某个数的平方,称为完全平方数。
求数x是否是完全平方数的语句如下,请补充完整。
If____________________Then
Text1.Text=”完全平方数”
Else
Text1.Text=”不是完全平方数”
End If
解析 条件是该数是某个数的平方,那么该数的平方根是整数。
答案 Int(Sqr(x))=Sqr(x)
3.一个四位数等于它每一位数的4次方之和,则称为玫瑰花数。
若某个数n的各个位上的数字分别是a、b、c、d,请完善下列程序段。
If________________Then
Text1.Text=”是玫瑰花数”
Else
Text1.Text=”不是玫瑰花数”
EndIf
解析 理解选择结构的条件。
答案 a^4+b^4+c^4+d^4=n
4.在文本框Text1中输入电子邮箱的名称s,查找“@”符号所在位置,查找到第i个字符ch(ch=Mid(s,i,1)),如果是“@”符号,用变量p记录“@”符号的位置。
请把下列语句补充完整。
If________Then ________
解析 条件是当前字符ch与“@”符号比较,注意加引号,i表示当前位置。
答案 ch=”@” p=i
5.杭州机动车限行规定中,对本地和外地牌照车限行有不同的规定,在文本框Text1输入汽车牌照s,若以“浙A”开头,是否为本地牌照的标志变量flag为True,否则为False。
请把下列语句补充完整。
If________Then ________
解析 条件是开头两个字符是否是”浙A”。
答案 Mid(s,1,2)=”浙A” flag=True
6.星期一那天,杭州本地牌照尾号为1和9的汽车是限行的,在汽车牌照本中取得最后一个数字ch(文本型),判断该车是否限行,请把下列语句补充完整。
If________________Then
p=”限行”
Else
p=”不限行”
End If
解析 两个条件满足一个,注意数据类型。
答案 ch=”1”Orch=”9”或Val(ch)=1OrVal(ch)=9
7.在文本框Text1、Text2、Text3中分别输入一元二次方程系数a、b、c,单击按钮Command1,在Label1中输出方程根的情况。
请把下列语句补充完整。
d=b*b-4*a*c
If____①____Then
Label1.Caption=”a不能为零,不是一元二次方程”
Else
If____②____Then
Label1.Caption=”方程没有根”
Else
X1=(-b+Sqr(d))/(2*a)
X2=(-b-Sqr(d))/(2*a)
EndIf
EndIf
划线处代码为①___________________________________________________
②_______________________________________________________________
解析 执行语句中已经提示“a不能为零”和“方程没有根”。
答案 ①a=0 ②d<0
8.在文本框Text1中输入一个[200,500]之间的整数x,对这个整数进行一系列操作,若不在这个范围,则列表框List1中输出“输入数据有误”的提示,并清除文本框Text1中数字。
请把下列语句补充完整。
If__________________Then
′以下操作略
Else
List1.AddItem”输入有误!
”
Text1.Text=””
EndIf
解析 注意条件表达式的写法。
答案 x>=200Andx<=500
9.在文本框Text1中输入一个字符串s,判断当前第i个字符ch属于大写字母(dxzm)、小写字母(xxzm)、阿拉伯数字(sz)和其他字符(qt)其中的一种,并统计个数。
请把下列语句补充完整。
ch=Mid(s,i,1)
Ifch>=”A”Andch<=”Z”Then
dxzm=dxzm+1
____①____Then
xxzm=xxzm+1
____②____Then
sz=sz+1
Else
qt=____③____
EndIf
划线处代码①_____________________________________________________
②________________________________________________________________
③________________________________________________________________
解析 要注意多分支选择的写法,同时要写出小写字母和数字的条件。
答案 ①ElseIf ch>=”a”Andch<=”z”
②ElseIf ch>=”0”Andch<=”9” ③qt+1
10.用计算机模拟一个猜价格游戏,随机产生一个[20,60]之间的整数x,在文本框Text1中输入价格,单击“确定”按钮Command1,若猜中了,提示“猜中了”,所猜价格与x的距离在5元之内,提示“接近了”,高于5元,提示“太高了”,低于5元,提示“太低了”。
程序运行界面如下图所示:
程序代码如下所示,请补充完整。
DimxAsInteger
PrivateSubForm_Load()
x=____①____
EndSub
PrivateSubCommand1_Click()
DimjgAsInteger
jg=Val(Text1.Text)
Ifjg=xThen
Label4.Caption=”猜中了”
____②____Then
Label4.Caption=”接近了”
____③____Then
Label4.Caption=”太高了”
Else
Label4.Caption=”太低了”
EndIf
EndSub
划线处代码为①___________________________________________________
②_______________________________________________________________
③_______________________________________________________________
解析 写出一个在[20,60]之间的整数x的表达式,差价在5元内有两种表示方法。
同时要注意多分支选择结构的书写。
答案 ①Int(Rnd()*41+20) ②ElseIf Abs(jg-x)<=5或jg-x>=-5And jg-x<=5③ElseIf jg-x>5
11.模拟一个简单计算器,输入两个数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。
在文本框Text1中输入第一个数,在文本框Text2中输入第二个数,在文本框Text3中输入运算符,在文本框Text4中