一VB基本知识及选择循环结构习题.docx
《一VB基本知识及选择循环结构习题.docx》由会员分享,可在线阅读,更多相关《一VB基本知识及选择循环结构习题.docx(29页珍藏版)》请在冰豆网上搜索。
![一VB基本知识及选择循环结构习题.docx](https://file1.bdocx.com/fileroot1/2023-2/1/2406d072-e2cc-476d-8cf5-d48163eeb78a/2406d072-e2cc-476d-8cf5-d48163eeb78a1.gif)
一VB基本知识及选择循环结构习题
一、VB基本知识及选择、循环结构习题
一、基本概念题
(1)说明下列哪些是VisualBasic合法的直接常量,并分别指出它们的类型。
100.0%1001E1123D3123,4560100
“ASDF”“1234.5”#2004/10/7#100#π
&O78&H123TrueT-1123!
345.54#
答:
在VB中,直接常量是以直接明显的形式给出的数据。
根据数据类型的不同,直接常量分为:
字符串常量、数值常量、日期常量和布尔常量。
字符串常量是由一对半角双引号“””加以界定的字符序列,该字符序列可以是任何能被计算机处理的字符。
本题中,“ASDF”、“1234.5”是字符串常量;
数值常量是由数值、小数点和正负号所构成的数值。
在VisualBasic中除十进制数值常量外,还有八进制、十六进制数值常量。
八进制常量前加&O;十六进制常量前加&H。
本题中,100.0、1E1、123D3、0100、100#、&O78、&H123、-1123!
和345.54#均为数值常量。
日期常量用来表示某一天或某一天的具体时间。
在VisualBasic中,日期常量用两个“#”号加以界定。
本题中,#2004/10/7#是日期常量。
逻辑型常量只有True和False两个值,表示“真”和“假”。
本题中,True是逻辑常量。
本题中,%100、123,456、π、T不是合法的常量。
(2)下列数据哪些是变量,哪些是常量?
是什么类型的常量?
Name“name”Falseff“11/16/99”cj
“120”n#11/12/2004#12.345
答:
“name”、“11/16/99”、“120”是字符串常量;12.345是数值常量;#11/12/2004#是日期常量;False是逻辑常量。
Name、ff、cj、n是变量。
(3)下列符号中,哪些可以是VisualBasic的合法变量名?
A123a12_3123_aa,123a123Integer
XYZFalseSin(x)变量名sinxπ
答:
变量命名的规则是:
必需以字母或汉字开头,其后可以是下划线、字母、汉字和数字,长度小于255个字符;不能使用VB的关键字。
本题中,合法的变量名是:
A123、a12_3、XYZ、变量名、sinx;不合法的变量名是:
123_a(不能用数字开头)、a,123(不能用逗号)、a123(不能有空格)、False、Sin(x)(VB的关键字)、π(不是英文字母)。
(4)把下列数学表达式写成VisualBasic表达式:
(1)
(2)
(3)
(4)
(5)
(6)
答:
(1)abs(x+y)+z^5
(2)(1+x*y)^6
(3)(10*x+Sqr(3*y))/(x*y)
(4)(-b+Sqr(b*b-4*a*c))/(2*a)
(5)1/(1/r1+1/r2+1/r3)
(6)Sin(3.14159*45/180)+(Exp(10)+log(10))/Sqr(x+y+1)
(5)写出下列表达式的值:
(1)123+23Mod10\7+Asc("A")
(2)Int(68.555*100+0.4)/100
(3)#11/22/2004#-10
(4)"ZXY"&123&"abc"
答:
VB中计算表达式的值时,首先要考虑的是运算符的优先级。
(1)式中整除运算符\优先级最高,故首先计算10\7=1;然后计算23Mod1=0;所以整个表达式的值=123+0+65=188。
(2)式中Int(68.555*100+0.4)=Int(6855.9)/100=6855/100=68.55。
注意Int()函数取整时,参数如果是整数,略去小数部分;参数是负数时,取不大于参数的最大整数。
(3)式中的10表示天数,故表达式的值是2004-11-12。
(4)“&”运算符的作用是把字符串连接起来,如果遇到数值,则先把数值转换成字符串后再连接,所以表达式的值是"ZXY123abc"。
(6)设a=7,b=3,c=4,求下列表达式的值:
(1)a+3*c
(2)a^2/4
(3)a/2+3\2(4)aMod3+b^3/c\5
答:
(1)式=7+3*4=19;
(2)式=7*7/4=12.25;
(3)式=7/2+3\2=3.5+1=4.5;
(4)式=1+27\4/5=1+6.75\5=1+6\5=2;
(7)写出下列函数的值:
(1)Int(-3.14159)
(2)Fix(-3.14159)
(3)Sqr(Sqr(81))(4)Len("VisualBasic程序设计")
(5)Int(Abs(99-100)/2)(6)Sgn(7*3+2)
(7)LCase("HellowVB!
")(8)Mid("HellowVB!
",4,3)
(9)Left("HellowVB!
",3)(10)Val("16个加23个")
(11)Str(-459.55)(12)UCase("VisualBasic")
答:
(1)Int(-3.14159)=-4;
(2)Fix(-3.14159)=-3;
(3)Sqr(Sqr(81))=3
(4)Len("VisualBasic程序设计")=16;
(5)Int(Abs(99-100)/2)=0;
(6)Sgn(7*3+2)=1;
(7)LCase("HellowVB!
")=”hellowvb”;
(8)Mid("HellowVB!
",4,3)=”low”;
(9)Left("HellowVB!
",3)=”Hel”;
(10)Val("16个加23个")=16;
(11)Str(-459.55)=”-459.55”;
(12)UCase("VisualBasic")=”VISAULBASIC”;
二、选择题
(1)可以同时删除字符串前导和尾部空格的函数是。
A.LtrimB.RtrimC.TrimD.Mid
(2)函数Int(Rnd
(1)*10)是在哪个范围产生随机整数。
A.(0,1)B.(0,9)C.(1,10)D.(1,9)
(3)数学式子sin25º写成VisualBasic表达式是。
A.Sin25B.Sin(25)C.Sin(25º)D.Sin(25*3.14/180)
(4)表达式16/4–2^3*8/4Mod5\2的值是。
A.14B.4C.20D.2
(5)数学关系式
表示成正确的VB表达式为。
A.3<=x<10B.x>=3Andx<10
C.x>=3Orx<10D.3<=xAnd<10
(6)已知A=”12345678”,则表达式Val(Left(a,4)+Mid(a,4,2))的值是。
A.123456B.123445C.8D.6
(7)表达式Len("123程序设计ABC")的值是。
A.10B.14C.20D.17
(8)下面正确的赋值语句是。
A.x+y=30B.y=3π*r*rC.y=x+30D.3y=x+1
(9)为了给x,y,z三个变量赋初值1,正确的赋值语句是。
A.x=1:
y=1:
z=1B.x=1,y=1,z=1C.x=y=z=1D.x,y,z=1
(10)赋值语句g=123+Mid("123456",3,2)执行后,变量g中的值是。
A.“12334”B.123C.12334D.157
(11)表达式Not(a+b=c-d)是_______。
A.逻辑表达式B.字符表达式C.算术表达式D.关系表达式
(12)如果x是一个正实数,对x的第3位小数四舍五入的表达式是。
A.0.01*Int(x+0.005)B.0.01*Int(100*(x+0.005))
C.0.01*Int(100*(x+0.05))D.0.01*Int(x+0.05)
(13)下列哪组语句可以将变量a,b的值互换。
A.a=b:
b=aB.a=a+b:
b=a-b:
a=a-b
C.a=c:
c=b:
b=aD.a=(a+b)/2:
b=(a-b)/2
(14)下列四个字符串进行比较,最小的是。
A.“9977”B.“B123”C.“Basic”D.“DATA”
(15)下列逻辑表达式中,其值为True的是。
A.“b”>“ABC”B.“THAT”>“THE”C.9>“H”D.“A”>“a”
(16)表达式a+b=c是。
A.赋值表达式B.字符表达式C.算术表达式D.关系表达式
(17)在下列表达式中,非法的是。
A.a=b+cB.a>b+cC.a≠b>cD.a
(18)语句PrintFormat(“HELLO”,“<”)的输出结果是 。
A.HELLOB.helloC.HeD.he
(19)MsgBox函数的返回值的类型是 。
A.整数 B.字符串 C.逻辑值 D.日期
(20)用语句DimA(-3to5)AsLong定义的数组元素个数是。
A.7B.8C.9D.10
答:
(1)选C。
Trim函数可以出去字符串两端的空格,而Ltrim、Rtrim则分别出去字串左端或右端的空格。
(2)选B。
Rnd函数返回一个0~1(不包括1)的单精度小数,乘以10后用Int函数取整,得到的数应在0~9之间。
(3)选D。
VB中,所有三角函数的参数必须用弧度代入计算,反三角函数的返回值是弧度。
(4)选B。
因为16/4–2^3*8/4Mod5\2=4-8*8/4Mod2=4-16Mod2=4-0=4。
(5)选B。
表示变量x大于等于3而且小于9,应注意这里不能使用数学式子的习惯用法。
(6)选B。
Left(a,4)的值是”1234”,Mid(a,4,2)的值是”34”,两字符串连接后再由Val函数转变为数值123445。
(7)选A。
在VB中,西文字符、中文字符和数字都是一个字符长度,字符串长度就等于字符的个数。
(8)选C。
赋值号左边只能是变量,不能是表达式,故A是错误的;B、D中的均有不合法的变量名。
(9)选A。
选项B、D语法错误,选项C是一关系表达式。
(10)选D。
数值型数据与字符串相加时,如果字符串是数字,VB把字符串转变为数值后,再相加;字符串不是数字时,系统提示出错。
(11)选A。
由逻辑运算符组成的表达式是逻辑表达式。
(12)选B。
(13)选B。
(14)选A。
字符串的比较是按字符的ASCII码值从左到右一一比较,先大为大。
(15)选A。
(16)选D。
表达式a+b=c是关系表达式,如果a+b的值等于c,则表达式的值为True,否则为False。
(17)选C。
VB中的不等号只能用<>。
(18)选B。
在格式输出函数中,“<”是强制小写符号。
(19)选A。
MsgBox函数的返回值的类型是一整型数,记录了用户在消息框中选择了哪一个按钮。
(20)选C。
定义的数组元素个数是9,数组元素的下标分别是:
-3,-2,-1,0,1,2,3,4,5。
三、判断题
(1)VB6.0中&H12是8进制的数值常数。
(2)设A="123",B=123,则A+B的结果为246,A-B的结果为0。
(3)已知A$="87654321",则表达式Val(Left$(A$,4)+Mid$(A$,4,2))的值是:
876554。
(4)Rnd函数产生的是(0,1)之间不包括0、1的随机小数。
(5)表示x是5的倍数或是9的倍数的逻辑表达式为:
xMod5=0ORxMod9=0。
(6)Len("等级考试")和LenB("等级考试")的结果相同。
(7)VB6.0中字符串常量是用双引号或单引号括起来的字符串。
(8)PrintInStr("VisualBasic","I")的结果为0。
(9)固定数组中的数组元素个数一旦定义好后,在程序运行过程中不再会发生变化,并且数组中数组元素的值也不会变化。
(10)数组元素的下标可以是常数、变量或表达式。
(11)在For…Next循环中,其中Step步长可以是正数,也可以是负数。
(12)在Do…Loop[While|Until]循环中,While关键字或Until关键字必须选择其中之一。
(13)在For...Next循环中,ExitFor子句是可选项,它可以放置在循环体语句中的任何位置。
(14)动态数组在定义时已被分配存储空间。
(15)在VB6.0中,OptionBase语句的参数只能是0或1。
答:
(1)错。
&H12是16进制的数值常数,8进制数常数的前缀是&O。
(2)对。
数值型数据与字符串相加时,如果字符串是数字,VB把字符串转变为数值后,再相加。
(3)对。
Left$(A$,4)的返回值是“8765”,Mid$(A$,4,2)的返回值是“54”,两个字符串相加后,再由Val函数转换成876554。
(4)错。
Rnd函数产生的是(0,1)之间的随机小数,包括0,但不包括1。
(5)对。
一个数是另一个数的倍数时,相除余数为零。
(6)错。
Len函数的返回值是字符个数,LenB函数的返回值是字符串所占用的字节数。
(7)错。
VB6.0中字符串常量只能是用双引号括起来的字符串。
(8)对。
InStr函数的返回值是乙字串在甲字串中的位置,如果甲字串中不包含乙字串,则函数返回值是0。
(9)错。
固定数组中的数组元素个数一旦定义好后,在程序运行过程中不再会发生变化,但数组元素的值是可以变化的。
(10)对。
(11)对。
(12)错。
While关键字和Until关键字可以同时省略,表示无条件循环。
此时,循环体中应有ExitDo子句。
(13)对。
(14)错。
动态数组在定义时没有被分配存储空间。
(15)对。
四、程序阅读题
(1)执行下面程序后,显示的结果是 。
PrivateSubForm_Click()
DimxAsInteger
x=Int(Rnd)+4
SelectCasex
Case5
Print"优秀"
Case4
Print"良好"
Case3
Print"及格"
CaseElse
Print"不及格"
EndSelect
EndSub
答:
运行结果是:
“良好”。
因为x=0+4=4,在SelectCase语句中执行Print"良好"语句。
(2)执行下面程序段后,变量x的值为 。
DimxAsInteger
x=5
Fori=1To20Step3
x=x+i\5
Nexti
答:
变量x的值为16。
因为循环体共执行Int((20-1)/3+1)=7次,前两次循环x的值不变;第3次循环后x的值为6;第4、5次循环,x的值每次加2;第6、7次循环x的值每次加3;故循环结束后x的值为16。
(3)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimxAsInteger
Fori=1To3
Forj=1Toi
Fork=jTo3
x=x+1
Nextk
Nextj
Nexti
Printx
EndSub
答:
输出结果是x=14。
这是一个3重循环,最内层的循环体共执行14次,每次加1。
(4)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimxAsInteger
x=0
DoWhilex<50
x=(x+2)*(x+3)
n=n+1
Loop
Print"x=";x;"n=";n
EndSub
答:
输出结果是x=72n=2。
本程序执行循环2次,第1次循环,x的值为6,n值为1;第2次循环,x的值为72,n值为2。
x大于50时,循环终止。
(5)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimxAsInteger,aAsInteger
x=0
Forj=1To5
a=a+j
Nextj
x=j
Printx,a
EndSub
答:
输出结果是615。
变量x中保存的是循环变量j的终止值6。
循环体执行了5次,故a的值是15。
(6)以下程序的循环次数是 。
Forj=8To35Step3
Printj;
Nextj
答:
循环体共执行Int((35-8)/3+1)=10次。
(7)执行下面程序输入4后,程序输出的结果是 。
PrivateSubForm_Click()
x=InputBox(x)
Ifx^2<15Theny=1/x
Ifx^2>15Theny=x^2+1
Printy
EndSub
答:
输出结果是17。
因为x^2=16>15,故程序执行y=x^2+1=17。
(8)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimsumAsInteger
sum%=19
sum=2.23
Printsum%;sum
EndSub
答:
输出结果是22。
程序中变量sum被定义成整型变量,所以赋与实数值时,系统会把小数部分除去。
%是类型符号,也是表示整型。
(9)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
a=100
Do
s=s+a
a=a+1
LoopUntila>100
Printa
EndSub
答:
输出结果是101。
程序中使用的是后测型循环结构。
循环体执行1此后,变量a的值变为101,满足循环结束条件,故循环终止。
(10)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
a="ABCD"
b="efgh"
c=LCase(a)
d=UCase(b)
Printc+d
EndSub
答:
输出结果是"abcdEFGH"。
LCase()函数的作用是把字符串中的大写字母转换成小写;UCase()函数的作用是把字符串中的大写字母转换成大写。
(11)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
x=2:
y=4:
z=6
x=y:
y=z:
z=x
Printx;y;z
EndSub
答:
输出结果是464。
应注意的是本程序无法实现3个变量值的互换。
(12)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimcountAsInteger
count=0
Whilecount<20
count=count+1
Wend
Printcount
EndSub
答:
输出结果是20。
程序中的循环体执行20次,当count的值为20时,不再满足循条件,程序执行循环结构后面的打印语句。
(13)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
a="*":
b="$"
Fork=1To3
x=Str(Len(a)+k)&b
Printx;
Nextk
EndSub
答:
输出结果是"2$""3$""4$"。
程序循环执行时,Len(a)的返回值始终是1,Str(Len(a)+k)的值分别是2、3、4。
字符串连接符&把两个字符连接在一起。
(14)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
k=0:
a=0
DoWhilek<70
k=k+2
k=k*k+k
a=a+k
Loop
Printa
EndSub
答:
输出结果是78。
程序中的循环体可以被执行两次。
第1次执行后变量k、a的值均为6,第2次循环后,k的值是72,a的值是78。
(15)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimM(10)AsLong,N(10)AsLong
i=3
Fort=1To5
M(t)=t
N(i)=2*i+t
Nextt
PrintN(i);M(i)
EndSub
答:
输出结果是113。
本程序中的循环体执行5次,但由于变量i的值保持不变,故只对M(t)和N(3)进行赋值。
循环结束后,N(3)的值是11,M(3)的值是3。
(16)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
Dima()
a=Array(1,2,3,4)
j=1
Fori=3To0Step-1
s=s+a(i)*j
j=j*10
Nexti
Prints
EndSub
答:
输出结果是1234。
程序中的循环体执行4次,变量s的值为4+30+200+1000=1234。
(17)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
DimM(10)
Fork=1To10
M(k)=11-k
Nextk
x=6
PrintM(2+M(x))
EndSub
答:
输出结果是4。
循环执行完成后数组M的值为(10,9,,8,7,6,5,4,3,2,1)。
M(6)的值是5,故M(2+5)=M(7)的值是4。
(18)执行下面程序后,输出的结果是 。
PrivateSubForm_Click()
Dima(10)AsInteger,p(3)AsInteger
k=5
Fori=1To10
a(i)=i
Next