资源简介 (共27张PPT)专题6 VB语言及算法基础1.常见标准函数的功能函数名 功能 应用举例 函数返回值Abs(x) 取x的________ Abs(-6.3) ________Int(x) 求不大于x的__________ Int(-6.3) ______Sqr(x) 求x的________ Sqr(9) ____Rnd() 产生一个_______之间小数 Rnd() ________________Str(x) 将数值x转换成______ Str(123) ________绝对值6.3最大整数-7平方根3[0,1)[0,1)之间小数文本”123”Val(s) 将文本s转换成______ Val(”63”) ______Len(s) 求字符串s的______ Len(”Abc”) ____Mid(s,i,n) 在字符串s第i个位置开始____个字符 Mid(”I am a boy”,3,2) _______Asc(s) 求字符串s的十进制______码值 Asc(”A”) ______Chr(x) 将ASCII值转换成______ Chr(97) ________数值长度633n”am”ASCII65字母”a”2.算术类基本运算符及优先级按从高到低排列为^(乘幂)→-(取负)→*、____和\→________→+—3.关系类运算符 =、>、<、______、>=、<=4.逻辑类运算符 Not→________→Or5.基本运算的优先级______运算符→______运算符→______运算符/Mod<>And算术关系逻辑B考点一 对于标准函数的理解【例1】 用UltraEdit观察字母”A”的内码为41H,若已知大写字母S在26个英文字母表中位置是t(1≤t≤26),则下列能表示该英语字母的VB表达式是( )A.Chr(t) B.Chr(Asc(”A”)+t-1)C.Chr(41+t) D.Chr(65+Int(t*Rnd))解析 本题考核对函数的理解。字母”A”的内码为41H,转换成十进制为65D。因此选项B不正确。大写字母S在26个英文字母表中位置为t,因此可以表达为Chr(64+t),用A的ASCII码值代入,应为Chr(Asc(”A”)+t-1)。A【变式1】 下列VB表达式的值为”2020”的是( )A.Mid(”Hello2020!”,6,4) B.Abs(Int(-2018.8)-1)C.Int(Rnd*2020+1) D.”2018”+”2”解析 A选项取出字符串,B选项结果的类型是整型,C选项产生[1,2020]范围内的随机整数。D选项进行连接,值为“20182”。C考点二 运算符的优先级【例2】 下列VB表达式中,值最大的是( )A.Val(Mid(”3.1415926”,6,2)) B.Int((Rnd-Rnd+1)/2)*100C.6790 Mod 1000\10 D.Int(Rnd*80)+10解析 本题考核的知识点是VB函数和表达式的知识。选项A的值为59,表达式(Rnd-Rnd+1)/2的范围[0,2)/2,因此选项B的值为0。选项C中先整除再取模,值为90.选项D中属于[10,89]之间的整数。A【变式2】 VB表达式 Int(Rnd*10)+54\9/3的值可能是( )A.18 B.12 C.28 D.11解析 Int(Rnd*10)的值范围为0至9,54\9/3的值为18(/优先级高于\),故答案是A。【变式3】 (2021·1月浙江选考)VB表达式3+9 Mod 3*2的值是( )A.0 B.3 C.6 D.9解析 考查了表达式的识读。优先级“*”大于Mod,先计算“*”,再计算Mod。AD考点三 逻辑表达式的值【例3】 若x是整型变量,下列选项中,与表达式Not(x>=5 And x<9)等价的是( )A.x<5 And x>=9 B.Not x>5 And Not x<9C.x>=5 Or x<9 D.x<5 Or x>=9解析 本题考查关系表达式。通过在数轴上画出x>=5 And x<9 区域(左图),取反后得到右图。容易得知答案选D。此题也可以根据通用技术数字电路中“德·摩根定律”进行解答。D【变式4】 与表达式Not x<0 Or y Mod 2=0具有相同功能的是( )A.x>=0 And y Mod 2=1 B.x>=0 And y\2=0C.x>0 Or y/2=Int(y/2) D.x>=0 Or y\2=y/2解析 本题考查VB运算符优先级别和运算方法。关系运算级别高于逻辑运算,Not运算优先级别优于Or,y Mod 2=0、y/2=y\2、y/2=Int(y/2),这三个表达式都可以表示y能被2整除,因此D选项正确。B【变式5】 三角形的三边长为a、b、c(均大于0),能判断它是等边三角形的VB表达式是( )A.a=b=c B.a=b And b=cC.a=b Or b=c Or a=c D.c-a-b=0解析 本题主要考查VB表达式。选项A是赋值语句,先计算表达式“b=c”的值再赋值给a。选项B中a=b和b=c同时为True时,表达式a=b And b=c的值才为True,即a、b、c相等,能判断是等边三角形,选项B正确。选项C只能判断是等腰三角形,只要a=b或b=c或a=c中一个为True,表达式a=b Or b=c Or a=c值为True。选项D只能表明c=a+b,而这甚至都不能组成一个三角形。考点四 程序调试【例4】 某VB程序的一个事件过程如下:Private Sub Command1_Click( )Dim i As Integer,k As Integer,s As StringDim a(1 To 10) As IntegerFor i=1 To 100k=Int(Rnd()*11)+1a(k)=a(k)+1Next iFor i=1 To 10s=Str(a(i))List1.AddItem sNext iEnd SubB程序运行时,单击命令按钮Command1后弹出如图所示的错误信息提示。出现错误的语句是( )A.k=Int(Rnd()*11)+1 B.a(k)=a(k)+1C.s=Str(a(i))) D.List1.AddItem s解析 本题考核的知识点是VB的错误调试。根据图中的错误提示,错误发生的原因是数组的下标越界,观察程序,数组定义的范围是1到10,而k=Int(Rnd() *11)+1产生的k的范围是1到11,当产生的随机数是11的时候,超出了数组的下标范围。C【变式6】 有如下VB程序段:s=Text1.Texti=2: n=Len(s): flag=TrueDo While i <=Len(s)-1a=Val(Mid(s,i,1))-Val(Mid(s,i-1,1))b=Val(Mid(s,i+1,1))-Val(Mid(s,i,1))If a <>b Then flag=False Else i=i+1LoopIf flag=True Then s=”Yes” Else s=”No”Label1.Caption=s在Text1中输入“13578”,程序执行结束后,下列说法正确的是 ( )A.在Label1中输出“No” B.在Label1中输出“Yes”C.程序将进入死循环 D.程序执行完后,i的值是5解析 阅读程序可知,该程序用于判断某字符串数是否是等差数列。在Text1中输入“13578”,当i=4时,Val(Mid(s,i,1))-Val(Mid(s,i-1,1)) <>Val(Mid(s,i+1,1))-Val(Mid(s,i,1))成立,flag的值被赋值为False,此后程序陷入死循环,因为i不变,条件i <=Len(s)-1永远成立。要解决死循环的问题,最好将循环条件改为i <=Len(s)-1 And flag=True。【变式7】 有如下VB程序段:n=Val(Text1.Text)i=2: flag=TrueDo While i <=Int(Sqr(n))If n Mod i=0 Thenflag=FalseElsei=i+1End IfLoopIf flag Then Label1.Caption=”Yes” Else Label1.Caption=”No”该程序段运行后,若在文本框Text1中输入“15”,则下列说法正确的是( )A.flag 的值为TrueB.Label1中输出“No”C.程序将进入死循环D.条件表达式n Mod i=0等价于In(n/i)=n\i解析 程序的功能是判断n是否是素数,但该数不是素数时,并没有退出,也没有将i的值增加,因此将进入死循环。C1.VB表达式6\2*3+Abs (-8/2) Mod 3的值是( )A.2 B.10 C.0 D.8解析 运算符的优选级,先*/,\,MOD, +-。2.VB表达式 Sqr(Abs(Int (-8.2) ))+ 32 Mod 10\3的结果是( )A.5 B.4 C.3 D.2解析 本题属于 VB 基础运算题,VB 运算的优先级是先乘除,再整除,然后是取余 Mod。由于(Int(-8.2))=-9,因此该 VB 表达式的前半部分答案是 3。而加号后面表达式部分结果为 2,故本题答案是5。AA3.为了模仿抛硬币判断正反面,若以数值1表示硬币的正面,则不能实现的语句是( )A.Rnd*2 B.Int(Rnd*2)C.Int(Rnd*2)+1 D.1-Int(Rnd*2)解析 值为1可以表达正面,所以下列表达式应该是包含1的整数。A表达式Rnd*2值是小数,不能;B表达式Int(Rnd*2) 值是0或1,可以;C表达式Int(Rnd*2)+1值是1或2,可以;D表达式1-Int(Rnd*2) 值是0或1。A4.已知“A”的ASCII码值为41H,下列产生随机大写字母的VB表达式是( )A.Chr(Int(Rnd()*26+41)) B.Asc(Int(Rnd()*26+41))C.Chr(Int(Rnd()*26+65)) D.Asc(Int(Rnd()*26+65))解析 41H转十进制是65,大写字母ASCII编码值范围是65到90,根据用RND函数构建随机整数取值范围表达式:int(rnd*(b-a+1))+a,可以得到答案是C。C5.(2020·4月台州)有如下 VB 程序段:Dim s As String,c As String,n As Integer,i As IntegerDim a(1 To 26) As Integers=”23ab5cd968xyz”: n=0For i=1 To Len(s)c=Mid(s,i,1)If c>=”a” And c <=”z” Thena(Asc(c)-Asc(”a”)+1)=a(Asc(c)-Asc(”a”)+1)+1Elsen=n*10+Val(c)End IfNext i执行该程序段后,出现的错误提示为( )A.溢出 B.下标越界C.类型不匹配 D.无效的过程调用或参数解析 本题主要考查VB程序运行时的错误类型。变量n定义为Integer,取值范围为[-32768,32768],当i=10,c=“8”时,n=235968,故出现溢出错误。A6.(2020·4月之江教育联考)下列有关VB表达式的描述,正确的是( )A.VB的基本表达式包括算术表达式、关系表达式和条件表达式B.VB表达式“Int(3.14159*1000)/1000”的值为3.142C.VB表达式“Abs(Int(-20.19))+Len(Mid(”20.19”,2))”的值是25D.VB表达式“20201\10+Int(Sqr(5))”和“Len(”2020”)+2”的值相等解析 本题主要考查VB表达式。A项VB的基本表达式包括算术、关系和逻辑表达式;B项的表达式是将3.14159保留三位小数,并没有四舍五入的功能;D项20201\10+Int(Sqr(5))的结果为2022,Len(”2020”)+2的结果为6。C7.如果a、b、c三个变量中任何一个变量的值为0,则将a、b、c三个变量都赋值为1。与上述描述相匹配的VB语句是( )A.If a=0 And b=0 And c=0 Then a=b=c=1B.If a=0 And b=0 And c=0 Then a=1: b=1: c=1C.If a*b*c=0 Then a=b=c=lD.If a*b*c=0 Then a=1: b=a: c=b解析 选项A、B满足的条件是a、b、c三个变量均为0,C选项的赋值不对。D8.有如下VB程序段:Private Sub Command1_Click()Dim a(1 To 9) As IntegerDim i As Integer,sum As IntegerDim s As String,ch As Strings=”ABCDEFGHIJK”a(1)=1For i=2 To 10ch=Mid(s,i,1)a(i)=a(i-1)*(Asc(ch)-Asc(”A”))Next iFor i=2 To 10sum=sum+(a(1)-a(i-1))Next iLabel1.Text=Str(sum)End Sub程序运行时,单击命令按钮Command1后,将会出现的提示信息是( )A.溢出 B.未找到方法或数据成员C.下标越界 D.类型不匹配解析 本题考查程序的调试。Asc(ch)-Asc(”A”)的值表示字母ch距离字母”A”值,数组元素a(2)-a(10)的值分别为1-9,在累乘过程中,当i的值为9时,出现溢出现象。A 展开更多...... 收起↑ 资源预览