算法巩固2(VB表达式)
考点梳理
1.基本数据类型
注意:范围只需要记住Integer范围为±3万左右即可,计算机中实数是指带小数的数。
①数值类型表示大小,比如12、98、3.14等。
②字符串类型表示符号,在代码中数据要加双引号,比如"AB"、"120"、"桐乡2016"等。
③在计算机存储时,数值类型存储其数值大小,而字符存储的是其每个字符的内码。
2.VB中的常用标准函数
函数名 函数的功能 应用举例 函数返回值
Abs(X) 求X的绝对值 Abs(-2.5) 2.5
Int(X) 求不大于X的最大整数 Int(-5.1) -6
Sqr(X) 求X的算术平方根 Sqr(4) 2
Asc(X) 字符转换为ASCII Asc("A") 65
Chr(X) ASCII转换为字符 Chr(48) "0"
Val(X) 数字字串转换为数字 Val("-170") -170
Str(X) 数值转化成字符串 Str(-170) "-170"
Len(X) 计算字符串的长度 Len(“国A+B”) 4
Mid(X,n,k) 取字符串X中第n个字符起长度为k的子串 Mid("sanguo",3,2) "ng"
Rnd()/Rnd 随机数范围0≤Rnd<1 Int(Rnd*10) [0,9]内的整数
Fix(X) 截去数据的小数部分 Fix(2.56) 2
【注意】
Int(x)和Fix(x)的区别:Int(1.5)=1和Fix(1.5)=1,Int(-1.5)=-2和Fix(-1.5)=-1
Str(x):x为正数时,转换后自动加1个空格。Str(12)=" 12"。Str(-12)="-12"
Mid(X,n,k):第三个参数k省略,则取第n个字符起所有的字符。Mid("sanguo",3)= "nguo"
产生随机整数[25,100] 产生随机整数[-25,100]
①区间减去25,变成[0,75] ①区间加上25,变成[0,125]
②随机整数[0,75]的表达式为Int(Rnd*76) ②随机整数[0,125]的表达式为Int(Rnd*126)
③加上25得到[25,100],即Int(Rnd*76)+25 ③减去25得到[-25,100],即Int(Rnd*126)-25
最终表达式为Int(Rnd*76)+25 最终表达式为Int(Rnd*126)-25
总结:产生随机整数[a,b]的表达式为: Int(Rnd*(b-a+1)) + a
随机函数
产生随机整数[0,10]的表达式为: Int(Rnd*11)。如果随机整数范围不是从0开始,则先转换到从0开始
产生以a开头,间隔为d的n个数:Int(Rnd*n)*d+a
实数变量x四舍五入并保留n位小数的表达式:Int(x*10^n+0.5)/10^n
例如x=1.546,四舍五入保留2为小数Int(x*100 +0.5)/100,即为1.55
4.VB常见错误调试
二、常见错题
例1.以下无法生成集合{-1,1}中任一数的表达式是
A.(-1)^Int(Rnd*2) B.Int(Rnd*3)\2-1 C.Int(Rnd*2)*2-1 D.1-(Int(Rnd*2021) Mod 2)*2
【答案】B
【解析】本题考查Rndb函数的应用,集合中数为-1和1,选项B,Int(Rnd*3)\2值为0或1,所以生成的值应为-1或0,确定答案为B。
例2.VB表达式Int(Rnd+1)* 5 + 2 Mod 6的值是( )
A.1 B.5 C.7 D.12
【答案】C
【解析】本题考查VB表达式的计算。Int(Rnd+1)* 5 + 2 Mod 6=1*5 + 2 = 7,所以答案是C。
例3.VB表达式5 + 11 Mod 16 \ 4 / 2 的值是 ( )
A.6 B.7 C.8 D.10
【答案】C
【解析】 注意的算术运算符的优先级,先乘除,整除,再求余最后加减。 5 +( 11 Mod (16 \ (4 / 2)))=8,答案选C。
三、精选练习
1.(2009A9)已知 k 为十进制三位整数,下列选项中能判断“k 是奇数且百位是偶数”的是( )
A.Not(k mod 2<>0 and k \100 mod 2=0) B.k mod 2<>0 and k mod 100 mod 2=0
C.Not(k mod 10 mod 2=0 or k \100 mod 2<>0) D.k mod 10 mod 2<>0 or k \100 mod 2=0
2.(2009百校)x的范围为(0 255),下列选项中,与语句“n=x\128”功能相同的是( )
A.n =0 B. n = 0
If x> 128 Then n = 1 If x < 128 Then n = 1
C.n = 1 D. n = 1
If x < 128 Then n = 0 If x > 128 Then n = 0
(2010三校联考)变量a的初值为x,在下列语句中,每执行一次能使变量a的值在x、y两数值间交替出现的是( )
A.a = x + y - a B.a = -a C.a = a + x - y D.a = a - x + y
4.(2010浙江十校)下列VB表达式的值最大的是( )
A. Val(Mid("235",2,2)) B. Len("333") +5 C. Int(Rnd*10) +25 D. Sqr(25) + Int(12. 5)
5.(2010浙江五校)下列能正确表示等差数列{1,5,9,……,93,97}中随机整数的表达式是( )
A.Int(Rnd()*98)+1 B.Int(Rnd()*49)*2+1 C.Int(Rnd() *25)*4+1 D.Int(Rnd()*24)*4-3
6.(2010浙南名校)下列表达式的值与其它三个选项不同的是( )
A. Len("浙C-2020V") B. Sqr(4) ^3 C.5678 Mod 1000 \ 100 D. Mid("2020/8/8",6,1)
7.(2011 9+1)下列VB表达式的值为True的是( )
A. 8 \ 4 * 4 + Int(8.4) = 16 B. "56" > "527" C. a > b And a <= b D. Not(a > b Or a <= b)
8.(2011湖丽衢三地联考)现要计算出 a、b 之间(包含 a、b)3 的倍数的个数,下列 VB 表达式正确的是
A.b\3-(a-1)\3 B.(b-a+1)\3+1 C.(b-a)\3+1 D.(b-a-1)\3
9.(2011稽阳)下列VB表达式计算结果为True的是( )
A.Int(Sqr(10)) > 2 ^ 2 B.Mid("0123", 3, 2) > "56"
C.Len("654321") > Int(Rnd * 3) ^ 2 D.Not (3 = 4 Or 5 > 3)
10.(2011宁波)下列VB表达式中值为2020的是( )
A."2011" + Str(9) B.2025 + Int(-Sqr(20)) C.80 \ 4 * 101 D.Mid("1202",2,3) + Chr(48)
11.(2011绍兴一模)若x和y是整形变量,下列VB表达式的值为True时,不能表示x能被y整除的是
A.Int(x / y)= x / y B.Fix(x / y)= x / y C.Int(x / y)= x \ y D.x / y= x \ y
12.(2011台州一模)下列VB表达式的值等于20的是( )
A. Str(19+1) B. Abs(Int(-19.8)) C. Asc("1")+ 19 D. Sqr(4)+ 16
13.(2011温一模)下列VB表达式的值等于2020的是( )
A. Abs(Int(-2020.11)) B. Len (“2000”)+20
C.(2020\1000+2200 Mod 1000)*10 D. Val(Mid(“-2020”,3,2))+2000
14.(2011余杭)下列表达式的运算结果不等于9的是( )
A. Len("2020选考")+Sqr (9) B. Abs(Int(-8. 8)) C. Val (Mid("789",3, 1)) D. Asc("y")-Asc("Y")
15.(2012百校)符合产生随机整数n,其范围为(100≤n≤200)的VB表达式是( )
A. int(Rnd * 100)+ 100 B. int(Rnd * 100)+101 C. int(Rnd* 101)+100 D. int(Rnd * 101)+101
16.(2012北斗)有如下 VB 程序段:
a = 3
b = 4
c = a = b
执行该程序段后,变量c 的值为( )
A.3 B.4 C. True D.False
17.(2012慈溪)若x是整型变量,下列选项中,与表达式Not x >= l And Not x <= -1等价的是( )
A. x <= 1 And x >= -1 B. x <= 1 Or x >= -1
C. Not (x <= 1 Or x >=-1) D. Not (x >= 1 Or x <= -1)
18.(2012嘉兴)字符串变量a,b的值分别是“120”,“20”,下列表达式的值结果为“True”的是( )
A.a>b or ab B.Not Mid (a+b,2,3) C.Int (Rnd*5)*4+1>Val(b) D.Val(a) Mod 100\10=Sqr(4)
19.(2012金丽衢)下列VB表达式中,值最大的是( )
A.Sqr(4^4) B. Val((Mid(“2021加油!”,3,2))) C.Int(Rnd*11)+10 D. 42 Mod 20
20.(2012精诚联盟)s是个自然数,下列表达式能判断数字s是一个三位数奇数的是
A. 0 < s \ 100 <= 9 And s Mod 2 = 1
B. s \ 100 > 0 Or s \ 100 <= 9 And s \ 2 <> s / 2
C. s \ 1000 = 0 And s \ 100 > 0 And s \ 2 <> s / 2
D. Not (s \ 1000 > 0 Or s \ 100 <= 0) Or s \ 2 <> s / 2
21.(2012强基)下列 VB 表达式结果最小的是( )
A.2^3\3+8 Mod 2*3 B.5^2 Mod 3+7\2/2 C.Val(Mid("12",l))\4 D.Val("1"+"5")\3
22.(2012衢州)下列 VB 表达式中,计算结果与其他不同的选项是
A.Len("1+4=") B.17 Mod 13 \ 2 C.Abs(Int(-4.5)) D.Val(Mid(“2020520”,5,1))
23.(2012山水)下列表达式的值最大的是( )
A. Val (Str(10) + Str(0)) B. Val (Str(10)) + Val(Str(1)) C. Int(Rnd * 100) .D. Sqr (Len("10000"))
24.(2012新昌)现有编号为0~7的8位同学顺序连成一圈,则编号为k的同学的下一位同学的编号为( )
A.k+ 1 B.k Mod 8+ 1 C. (k+1) Mod 8 D.(k-1) Mod 8+1
25.(2012学军)已知闰年的判断条件是:年份能被4整除但不能被100整除,或者能被400整除。下列VB表达式中,能判断某年份(year)是否是闰年的是( )
A. year Mod 4<>0 And year Mod 100=0 Or year Mod 400=0
B. year Mod 4=0 And year Mod 100<>0 Or year Mod 400=0
C. year Mod 4=0 And year Mod 100<>0 Or year \ 400=0
D. year \ 4=0 And year \ 100<>0 Or year \ 400=0
26.(20.08 Z20联盟)在VB中,若x、y都是正整数且表达式x Mod y=1为真,则下列关系表达式值一定为真的是
A. x>y B. x\y=0 C. x\y<>x/y D. x*y Mod 2=0
27.(20.08 之江教育)下列能生成个位是 5 的两位随机正整数的表达式是( )
A.Int(Rnd * 90) + 5 B.Int(Rnd * 9 + 1) * 10 + 5
C.Int(Rnd * 10 + 1) * 10 + 5 D.Int((Rnd * 9 + 1) * 10) + 5
28.(20.09 G12名校协作体)下列VB表达式的值与其余三个表达式的值不同的是( )
A.Abs(Int(-9.1)) B.Asc(“9”)-Asc(“0”)
C.Len(”名校协作体,666”) D.(-3)^Val(Mid(“Fighting2020”, 9, 1))
29.(20.09 超级全能生A卷)生成两位数且能被5整除的随机整数的VB表达式是( )
A. Int(Rnd) * 90+ 5 B. Int(Rnd * 18) * 5+10 C. Int(Rnd * 10) *10+5 D. Int((Rnd* 18) * 5)+10
30.(20.09 嘉兴)下列VB表达式的值一定为True的是( )
①Val("10") +10 = 20 ②123 Mod 100 \ 10 = 3 ③"true" = "True" ④Int(Rnd * 2)=1
A.①③ B.②④ C.①② D.①②④
31.(20.09 七彩阳光)下列表达式能用于判断 x 为正整数的是( )
A.x = Int(x) Or x > 0 B.x = Int(x) And x > 0
C.x = Int(x) And Abs(x) = x D.x / 10 = x \ 10 Or Abs(x) = x
32.(20.09山水联盟)下列 VB 表达式中,可取到的最小值中,最小的为( )
A.Rnd - 99 B.Fix((-Rnd * 45)) *2-10 C.int((Rnd-Rnd)*100) D.-Int(Rnd*45)*2-10
33.(20.11 杭州高级中学)下列 VB 表达式的值为 True 的是
A. Asc("0") = 0 B. Val("3+4") = 7
C. Int(Rnd * 50) / 25 < 2 And "a" < "A" D. Mid("abc", 1, 1) < "b" Or 2 ^ 8 \ 6 / 3 = 128
34.(20.12 北斗星盟B卷)若 a、b 是两个正整数,下列选项中,表达式结果与其他三项不同的是
A. Int(a / b) = a \ b B. a mod b = 0 C. a \ b = a / b D. a - (a \ b) * b = 0
35.(20.12 诸暨)已知k为十进制多位整数,与语句“If k\10 Mod 2 = 0 Then a=1 Else a = 2”功能不同的是
A. If k \ 10 Mod 2 = 1 Then a = 2 Else a = 1 B. If k Mod 100\ 10 Mod 2 = 0 Then a = 1 Else a = 2
C. a = 2: If k \ 10 Mod 2 = 0 Then a = 1 D. a = 2: If (k Mod 100) \ 10 Mod 2 = 0 Then a = 1
答案
1.C 2.C 3.A 4.A 5.C 6.D 7.B 8.A 9.C 10.B 11.C 12.B 13.C 14.D 15.C 16.D 17.D 18.B 19.B 20.C
21.C 22.A 23.A 24.C 25.B 26.C 27.B 28.A 29.B 30.C 31.B 32.C 33.D 34.A 35.B