admin 管理员组文章数量: 887021
2023年12月16日发(作者:黎曼函数的性质)
一、VB基本知识及选择、循环结构习题
一、基本概念题
(1) 说明下列哪些是Visual Basic合法的直接常量,并分别指出它们的类型。
100.0 %100 1E1 123D3 123,456 0100
“ASDF” “1234.5” #2004/10/7# 100# π
&O78 &H123 True T -1123! 345.54#
答:在VB中,直接常量是以直接明显的形式给出的数据。根据数据类型的不同,直接常量分为:字符串常量、数值常量、日期常量和布尔常量。
字符串常量是由一对半角双引号“””加以界定的字符序列,该字符序列可以是任何能被计算机处理的字符。本题中,“ASDF” 、 “1234.5”是字符串常量;
数值常量是由数值、小数点和正负号所构成的数值。在Visual Basic中除十进制数值常量外,还有八进制、十六进制数值常量。八进制常量前加&O;十六进制常量前加&H。本题中,100.0、1E1、123D3、0100、100#、&O78 、&H123、-1123!和345.54#均为数值常量。
日期常量用来表示某一天或某一天的具体时间。在Visual Basic中,日期常量用两个“#”号加以界定。本题中,#2004/10/7#是日期常量。
逻辑型常量只有True和False两个值,表示“真”和“假”。本题中,True是逻辑常量。
本题中,%100、123,456、π、T不是合法的常量。
(2)下列数据哪些是变量,哪些是常量?是什么类型的常量?
Name “name” False ff “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) 下列符号中,哪些可以是Visual Basic的合法变量名?
A123 a12_3 123_a a,123 a 123 Integer
XYZ False Sin(x) 变量名 sinx π
答:变量命名的规则是:必需以字母或汉字开头,其后可以是下划线、字母、汉字和数字,长度小于255个字符;不能使用VB的关键字。本题中,合法的变量名是:A123、 a12_3、XYZ、变量名、sinx;不合法的变量名是:123_a(不能用数字开头)、a,123(不能用逗号)、a 123(不能有空格)、False、Sin(x)(VB的关键字)、π(不是英文字母)。
(4)把下列数学表达式写成Visual Basic表达式:
56|xy|z(1xy)(1) (2)
10x3ybb24acxy2a(3) (4)
110111eln10sin45xy1rr2r3 (6)(5)1
答:(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 + 23 Mod 10 7 + Asc("A")
(2)Int(68.555 * 100 + 0.4) / 100
(3)#11/22/2004# - 10
(4)"ZXY" & 123 & "abc"
答:VB中计算表达式的值时,首先要考虑的是运算符的优先级。
(1)式中整除运算符优先级最高,故首先计算107=1;然后计算23 Mod 1=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)a Mod 3 + b ^ 3 / c 5
答:
(1)式=7+3*4=19;
(2)式=7*7/4=12.25;
(3)式=7/2+32=3.5+1=4.5;
(4)式=1+274/5=1+6.755=1+65=2;
(7)写出下列函数的值:
(1)Int(-3.14159) (2)Fix(-3.14159)
(3)Sqr(Sqr(81)) (4)Len("Visual Basic程序设计")
(5)Int(Abs(99 - 100) / 2) (6)Sgn(7 * 3 + 2)
(7)LCase("Hellow VB!") (8)Mid("Hellow VB!", 4, 3)
(9)Left("Hellow VB!", 3) (10)Val("16个加23个")
(11)Str(-459.55) (12)UCase("Visual Basic")
答:
(1)Int(-3.14159)=-4;
(2)Fix(-3.14159)=-3;
(3)Sqr(Sqr(81))=3
(4)Len("Visual Basic程序设计")=16;
(5)Int(Abs(99 - 100) / 2)=0;
(6)Sgn(7 * 3 + 2)=1;
(7)LCase("Hellow VB!")=”hellow vb”;
(8)Mid("Hellow VB!", 4, 3)=”low”;
(9)Left("Hellow VB!", 3)=”Hel”;
(10)Val("16个加23个")=16;
(11)Str(-459.55)=”-459.55”;
(12)UCase("Visual Basic")=”VISAUL BASIC”;
二、 选择题
(1)可以同时删除字符串前导和尾部空格的函数是 。
A. Ltrim B. Rtrim C. Trim D. Mid
(2)函数Int(Rnd(1) * 10)是在哪个范围产生随机整数 。
A. (0,1) B. (0,9) C. (1,10) D. (1,9)
(3)数学式子sin25º写成Visual Basic表达式是 。
25 B. Sin(25) C. Sin(25º) D. Sin(25*3.14/180)
(4)表达式16/4 – 2^3 * 8/4 Mod 52的值是 。
A. 14 B. 4 C. 20 D. 2
(5)数学关系式3x10表示成正确的VB表达式为 。
A. 3<= x <10 B. x >= 3 And x<10
C. x>=3 Or x<10 D. 3<= x And <10
(6)已知A=”12345678”,则表达式Val(Left(a, 4) + Mid(a, 4, 2))的值是 。
A. 123456 B. 123445 C. 8 D. 6
(7)表达式Len("123程序设计ABC")的值是 。
A. 10 B. 14 C. 20 D. 17
(8)下面正确的赋值语句是 。
A. x+y=30 B. y=3π*r*r C. y=x+30 D. 3y=x+1
(9)为了给x,y,z三个变量赋初值1,正确的赋值语句是 。
A. x=1: y=1: z=1 B. x=1, y=1, z=1 C. x=y=z=1 D. x,y,z=1
(10)赋值语句g = 123 + Mid("123456", 3, 2)执行后,变量g中的值是 。
A. “12334” B. 123 C. 12334 D. 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=a B. a=a+b: b=a-b: a=a-b
C. a=c: c=b: b=a D. 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+c B. a>b+c C. a≠b>c D. a
(18)语句Print Format (“HELLO”, “<”) 的输出结果是 。
A. HELLO B. hello C. He D. he
(19)MsgBox函数的返回值的类型是 。
A. 整数 B. 字符串 C. 逻辑值 D. 日期
(20)用语句Dim A(-3 to 5) As Long定义的数组元素个数是 。
A. 7 B. 8 C. 9 D.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/4 Mod 52=4-8*8/4 Mod 2=4-16 Mod 2=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的倍数的逻辑表达式为:x Mod 5=0 OR x Mod 9=0。
(6) Len("等级考试")和LenB("等级考试")的结果相同。
(7) VB6.0中字符串常量是用双引号或单引号括起来的字符串。
(8) Print InStr("Visual Basic", "I")的结果为0。
(9) 固定数组中的数组元素个数一旦定义好后,在程序运行过程中不再会发生变化,并且数组中数组元素的值也不会变化。
(10)数组元素的下标可以是常数、变量或表达式。
(11)在For…Next循环中,其中Step步长可以是正数,也可以是负数。
(12)在Do…Loop[While|Until]循环中,While关键字或Until关键字必须选择其中之一。
(13)在Next循环中,Exit For子句是可选项,它可以放置在循环体语句中的任何位置。
(14)动态数组在定义时已被分配存储空间。
(15) 在VB6.0中,Option Base语句的参数只能是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关键字可以同时省略,表示无条件循环。此时,循环体中应有Exit Do子句。
(13)对。
(14)错。动态数组在定义时没有被分配存储空间。
(15)对。
四、 程序阅读题
(1)执行下面程序后,显示的结果是 。
Private Sub Form_Click()
Dim x As Integer
x = Int(Rnd) + 4
Select Case x
Case 5
Print "优秀"
Case 4
Print "良好"
Case 3
Print "及格"
Case Else
Print "不及格"
End Select
End Sub
答:运行结果是:“良好”。因为x=0+4=4,在Select Case语句中执行Print "良好"语句。
(2)执行下面程序段后,变量x的值为 。
Dim x As Integer
x = 5
For i = 1 To 20 Step 3
x = x + i 5
Next i
答:变量x的值为16。因为循环体共执行Int((20-1)/3+1)=7次,前两次循环x的值不变;第3次循环后x的值为6;第4、5次循环,x的值每次加2;第6、7次循环x的值每次加3;故循环结束后x的值为16。
(3)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim x As Integer
For i = 1 To 3
For j = 1 To i
For k = j To 3
x = x + 1
Next k
Next j
Next i
Print x
End Sub
答:输出结果是x=14。这是一个3重循环,最内层的循环体共执行14次,每次加1。
(4)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim x As Integer
x = 0
Do While x < 50
x = (x + 2) * (x + 3)
n = n + 1
Loop
Print "x="; x; "n="; n
End Sub
答:输出结果是x=72 n=2。本程序执行循环2次,第1次循环,x的值为6,n值为1;第2次循环,x的值为72,n值为2。x大于50时,循环终止。
(5)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim x As Integer, a As Integer
x = 0
For j = 1 To 5
a = a + j
Next j
x = j
Print x, a
End Sub
答:输出结果是6 15。变量x中保存的是循环变量j的终止值6。循环体执行了5次,故a的值是15。
(6)以下程序的循环次数是 。
For j = 8 To 35 Step 3
Print j;
Next j
答: 循环体共执行Int((35-8)/3+1)=10次。
(7)执行下面程序输入4后,程序输出的结果是 。
Private Sub Form_Click()
x = InputBox(x)
If x ^ 2 < 15 Then y = 1 / x
If x ^ 2 > 15 Then y = x ^ 2 + 1
Print y
End Sub
答: 输出结果是17。因为x^2=16>15,故程序执行y = x ^ 2 + 1=17。
(8)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim sum As Integer
sum% = 19
sum = 2.23
Print sum%; sum
End Sub
答:输出结果是2 2。程序中变量sum被定义成整型变量,所以赋与实数值时,系统会把小数部分除去。%是类型符号,也是表示整型。
(9)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
a = 100
Do
s = s + a
a = a + 1
Loop Until a > 100
Print a
End Sub
答:输出结果是101。程序中使用的是后测型循环结构。循环体执行1此后,变量a的值变为101,满足循环结束条件,故循环终止。
(10) 执行下面程序后,输出的结果是 。
Private Sub Form_Click()
a = "ABCD"
b = "efgh"
c = LCase(a)
d = UCase(b)
Print c + d
End Sub
答:输出结果是"abcdEFGH"。LCase()函数的作用是把字符串中的大写字母转换成小写;UCase()函数的作用是把字符串中的大写字母转换成大写。
(11) 执行下面程序后,输出的结果是 。
Private Sub Form_Click()
x = 2: y = 4: z = 6
x = y: y = z: z = x
Print x; y; z
End Sub
答:输出结果是4 6 4。应注意的是本程序无法实现3个变量值的互换。
(12)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim count As Integer
count = 0
While count < 20
count = count + 1
Wend
Print count
End Sub
答:输出结果是20。程序中的循环体执行20次,当count的值为20时,不再满足循条件,程序执行循环结构后面的打印语句。
(13)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
a = "*": b = "$"
For k = 1 To 3
x = Str(Len(a) + k) & b
Print x;
Next k
End Sub
答:输出结果是"2$" "3$" "4$"。程序循环执行时,Len(a)的返回值始终是1,Str(Len(a)+k)的值分别是2、3、4。字符串连接符&把两个字符连接在一起。
(14)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
k = 0: a = 0
Do While k < 70
k = k + 2
k = k * k + k
a = a + k
Loop
Print a
End Sub
答:输出结果是78。程序中的循环体可以被执行两次。第1次执行后变量k、a的值均为6,第2次循环后,k的值是72,a的值是78。
(15)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim M(10) As Long, N(10) As Long
i = 3
For t = 1 To 5
M(t) = t
N(i) = 2 * i + t
Next t
Print N(i); M(i)
End Sub
答:输出结果是11 3。本程序中的循环体执行5次,但由于变量i的值保持不变,故只对M(t)和N(3)进行赋值。循环结束后,N(3)的值是11,M(3)的值是3。
(16)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim a()
a = Array(1, 2, 3, 4)
j = 1
For i = 3 To 0 Step -1
s = s + a(i) * j
j = j * 10
Next i
Print s
End Sub
答:输出结果是1234。程序中的循环体执行4次,变量s的值为4+30+200+1000=1234。
(17)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim M(10)
For k = 1 To 10
M(k) = 11 - k
Next k
x = 6
Print M(2 + M(x))
End Sub
答:输出结果是4。循环执行完成后数组M的值为(10,9,,8,7,6,5,4,3,2,1)。M(6)的值是5,故M(2+5)=M(7)的值是4。
(18)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim a(10) As Integer, p(3) As Integer
k = 5
For i = 1 To 10
a(i) = i
Next i
For i = 1 To 3
p(i) = a(i * i)
Next i
For i = 1 To 3
k = k + p(i) * 2
Next i
Print k
End Sub
答:输出结果是33。前两个循环执行完成后数组a的值为(1,2,3,4,5,6,7,8,9,10),数组p的值为(1,3,9)。第3个循环执行后,k=5+1×2+4×2+9×2=33。
(19)执行下面程序后,输出的结果是 。
Private Sub Form_Click()
Dim a(10, 10) As Integer
For i = 2 To 4
For j = 4 To 5
a(i, j) = i * j
Next j
Next i
Print a(2, 5) + a(3, 4) + a(4, 5)
End Sub
答:输出结果是42。程序中数组a定义了11×11=121个元素,但循环语句只对其中的
部分元素赋了值。其中a(2,5)的值是10,a(3,4)的值是12,a(4,5)的值是20,三者之和是42。
(20)以下程序运行的结果是_______。
Option Base 1
Private Sub Command1_Click()
Dim a,b(3,3)
a=array(1,2,3,4,5,6,7,8,9)
For i=1 To 3
For j=1 To 3
b(i,j)=a(i*j)
If (j>=i) Then Print Tab(j*3);Format(b(i,j),"# # #");
Next j
Next i
End Sub
A. 1 2 3 B. 1 C. 1 4 7 D.1 2 3
4 5 6 4 5 2 4 6 4 6
7 8 9 7 8 9 3 6 9 9
答:输出结果是选项D。
五、 填空题
(1) 在VB中声明符号常量的关键字是_______。
(2) 设a=1,b=2,c=3,则VB6.0表达式:a
(3) "a","T","Z","9",这四个字符中,_______的ASCII码值最大。
(4) 执行语句 B = MsgBox("XXX",,"YYY")后,在消息框中的标题信息是_______。
(5)函数Len("Hello!"+Space(2)+Mid("Shanghai",5,3))的值是_______。
(6)表达式 Ucase(Mid("abcdefgh",3,4)) 的值是_______。
(7)表达式 Int(1234.555*100+0.5)/100 的结果是_______。
(8)使用数组声明语句Dim a(3, -2 TO 2, 5),则数组a包含元素的个数有_______。
(9) For-Next循环的
(10)填空,使得程序运行后,能在窗体上打印如图所示的图案。
Private Sub Form_Click()
For i = 1 To 4
Print Tab(8 - i);
For j = 1 To 8
Print "*";
( )
Next i
End Sub
(11)下面程序的功能是利用随机函数产生10个(1~100)之间的随机整数,打印其中能被5整除的数并求其和,请用正确的内容填空。
Private Sub Form_Click()
Dim sum As Integer, x As Integer
For i = 1 To 10
x = Int(Rnd * 100 + 1)
If () = 0 Then
sum = sum + x
Print "x="; x
End If
Next i
If sum <> 0 Then
Print "sum="; sum
End If
End Sub
(12)用正确的内容填空,使得以下程序能够找出50以内所有能构成直角三角形的整数。
Private Sub Form_Click()
Dim a As Integer, b As Integer
Dim c As Single
For a = 1 To 50
For b = a To 50
c = Sqr(a ^ 2 + b ^ 2)
If () Then Print a, b, c
Next b
Next a
End Sub
(13)用正确的内容填空,使得以下程序能够计算1+1/3+1/5+……+1/(2N+1),直到1/(2N+1)小于10-5。
Private Sub Form_Click()
sum = 1: n = 1
Do
n = n + 2
temp = 1 / n
sum = sum + temp
If temp < 0.00001 Then ()
Loop
Print "N="; n
Print "sum="; sum
End Sub
(14)某大奖赛,有7位评委给参赛选手打分。以下程序是输入7位评委对某选手的打分后,去掉最高分和最低分后计算其平均值作为该选手的成绩。请填空使得程序能正确运行。
Private Sub Form_Click()
sum = 0
For i = 1 To 7
cj = Val(InputBox("请输入第" & i & "位评委的打分", "录入"))
If i = 1 Then
Max = cj
Min = cj
Else
If Min > cj Then
Min = cj
ElseIf Max < cj Then
Max = cj
End If
End If
sum = sum + cj
Next i
aver = ()
Print "该选手的成绩为:", aver
End Sub
(15)以下程序用随机函数模拟掷骰子,统计掷50次骰子出现各点的次数,请用正确的内容填空。
Private Sub Form_Click()
Dim a(1 To 6) As Integer
Randomize
For i = 1 To 50
n = ()
a(n) = a(n) + 1
Next i
For i = 1 To 6
Print i; "点出现"; a(i); "次"
Next i
End Sub
答:
(1)Const
(2)True
(3)"a"
(4)YYY
(5)11
(6)CDEF
(7)1234.56
(8)120
(9)1
(10)Next j
(11)x Mod 5
(12)c = Int(c) And c <= 50
(13)Exit Do
(14)(sum - Max - Min) / 5
(15)Int(Rnd * 6) + 1
六、 编程题
(1) 编写程序将1~100自然数中能被3和5同时整除的数打印出来,并统计其个数。
解答:一个整数能被另一整数整除的条件是,它们相除时余数为零。
Private Sub Form_Click()
Dim i As Integer, n As Integer
For i = 1 To 100
If i Mod 3 = 0 And i Mod 5 = 0 Then ‘能够被3和5同时整除的条件
Print i
n = n + 1
End If
Next i
Print "1~100自然数中能被3和5同时整除的个数为:"; n
End Sub
(2) 我国现有人口13亿,设年增长率为0.75%,编写程序,计算多少年后将超过16亿。
解答:本题有两种解法,可以根据公式:
16=13((1+0.0075)n
直接利用标准函数对数求得:
n = Log(16 / 13) / Log(1+0.0075)
也可以利用循环求得:
Private Sub Form_Click()
x = 13
n = 0
Do While x < 16
x = x * 1.0075
n = n + 1
Loop
Print n; "年后我国人口将超过16亿,达到"; x; "亿"
End Sub
(3) 编写程序输出100~200之间不能被3整除的自然数。
解答:
Private Sub Form_Click()
Dim i As Integer
For i = 100 To 200
If i Mod 3 <> 0 Then '不能够被3整除的条件
Print i
End If
Next i
End Sub
(4) 设计程序,求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。
解答:
Private Sub Form_Click()
Dim n As Integer, s As Integer
s = 0
n = Val(InputBox("请输入n:")) ‘n由Inputbox函数输入再转换为数值型数据
For i = 1 To n
For j = 1 To i
s = s + j
Next j
Next i
Print s
End Sub
(5) 编写程序计算S的近似值,直到最后一项的绝对值小于10-5为止。并用Print方法输出计算结果。其中:
S1解答:
1111(1)k1234K
Private Sub Form_Click()
Dim s As Single, k As Integer
s = 0
k = 1
Do While Abs(1 / k) > 0.00001
s = s + (-1) ^ (k + 1) / k
k = k + 1
Loop
Print s
End Sub
(6) 假设某项税收的规定如下:
收入在500元以内,免征;
收入在500~1000元内,超过500元的部分纳税3%;
收入超过1000元时,超过的部分纳税4%;
收入超过2000元时,超过的部分纳税5%。
试编程实现上述操作。
解答:
Private Sub Form_Click()
Dim income As Single, tax As Single
income = Val(InputBox("请输入收入:")) 'income由Inputbox函数输入
Select Case income
Case Is > 2000
tax = 500 * 0.03 + 1000 * 0.04 + (income - 2000) * 0.05
Case Is > 1000
tax = 500 * 0.03 + (income - 1000) * 0.04
Case Is > 500
tax = (income - 500) * 0.03
Case Else
tax = 0
End Select
Print tax
End Sub
(7) 编写程序,用InputBox函数输入3个正整数,打印其中最大的数。
解答:
Private Sub Form_Click()
Dim max As Integer, temp As Integer
max = 0
For i = 1 To 3
Print "输入第"; i; "个数";
temp = Val(InputBox("输入整数"))
Print temp
If temp > max Then max = temp
Next i
Print "你输入的最大的数是"; max
End Sub
(8) 编写程序,任意输入三个整数A,B,C,按由大到小顺序把它们打印出来。
解答:
Private Sub Form_Click()
Dim a%, b%, c%, t%
a = Val(InputBox("输入整数a", "数据输入"))
b = Val(InputBox("输入整数b", "数据输入"))
c = Val(InputBox("输入整数c", "数据输入"))
Print "排序前 "; a; " "; b; " "; c
If a < b Then
t = a: a = b: b = t
End If
If a < c Then
t = a: a = c: c = t
End If
If b < c Then
t = b: b = c: c = t
End If
Print "排序后 "; a; " "; b; " "; c
End Sub
x3x5x2n1n1sinxx(1)3!5!(2n1)!直到第n项的(9) 编写程序,计算绝对值小于10-8
解答:
Private Sub Form_Click()
Dim x As Single, t As Single, sinx As Single
i = 1
sinx = 0
x = Val(InputBox("请输入x的值(弧度)", "数据输入"))
t = x
Do While (Abs(t) > 0.00000001)
sinx = sinx + t
t = -t * x * x / ((i + 1) * (i + 2))
i = i + 2
Loop
Print "编程求得的sin("; x; ")值为"; sinx
Print "调用内部函数求得的sin("; x; ")值为"; Sin(x)
End Sub
(10) 分别编写两个程序,在窗体上分别打印出如下所示的图形。
解答:打印左边图案:
Private Sub Form_Click()
Print '打印一空行
For i = 5 To 1 Step -1 '步长为-1
Print Tab(10); '从第10列开始打印
Print Spc(10 - i); '打印由Spc函数值规定的空格
For j = 1 To 2 * i - 1
Print "*"; '打印三角形的"*"号
Next j
Next i
End Sub
打印右边图案:
Private Sub Form_Click()
For i = 1 To 4
Print Tab(7);
Print Spc(4 - i);
For j = 1 To 2 * i - 1
Print "*";
Next j
Next i
For i = 5 To 1 Step -1
Print Tab(0);
Print Spc(10 - i);
For j = 1 To 2 * i - 1
Print "*";
Next j
Next i
End Sub
(11) 编写程序,输出1000之内的所有完数。“完数”是指一个数恰好等于它的因子之和,如6的因子为1、2、3,而6=1+2+3,因而6是完数。
解答:
Private Sub Form_Click()
For i = 1 To 1000
Sum = 0
For k = 1 To i - 1
If i Mod k = 0 Then
Sum = Sum + k
End If
Next k
If Sum = i Then
Print "i="; i; "是完全数"
End If
Next i
End Sub
(12) 一只小球从10米高度上自由落下,每次落地后反弹回原高度的40%,再落下。编程计算小球在第8次落地时,共计经过了多少米?
解答:
Private Sub Form_Click()
h = 10
Sum = 10
For i = 1 To 7
h = 0.4 * h
Sum = Sum + 2 * h
Next i
Print "小球第8次落地时,经过了"; Sum; "米"
End Sub
(13) 编写程序,求出所有小于或等于100的自然数对。自然数对是指两个自然数和与差都是平方数,如8和17的和为8+17=25与其差17-8=9都是平方数,则8和17就称为自然数对。
解答:
Private Sub Form_Click()
Dim i As Long, j As Long
Dim a As Single, b As Single
For i = 1 To 100
For j = 1 To i
a = i + j
b = i - j
If Sqr(a) = Int(Sqr(a)) And Sqr(b) = Int(Sqr(b)) Then
Print i, j
End If
Next j
Next i
End Sub
(14) 找出100~999之间的所有“水仙花数”。 所谓“水仙花数”是一个三位数,其各位数的立方各等于该数本身,例:153=13+53+33,故153是“水仙花数”。
解答:
Private Sub Form_Click()
Dim p As Integer
For n = 100 To 999
a = Int(n / 100)
b = Int((n - a * 100) / 10)
c = n - (a * 100 + b * 10)
p = a ^ 3 + b ^ 3 + c ^ 3
If p = n Then
Print n; "是水仙花数"
End If
Next n
End Sub
(15) 编写程序,在窗体上打印下图所示的“数字金字塔”:
解答:
Private Sub Form_Click()
Print ""
For i = 1 To 9
Print Space(16 - i);
For j = 1 To i
Print Format(j, "0");
Next j
If i > 1 Then
For j = i - 1 To 1 Step -1
Print Format(j, "0");
Next j
End If
Next i
End Sub
(16) 用一元纸币兑换一分、二分和五分的硬币,要求兑换硬币的总数为50枚。编程列出所有可能的兑换方案。
解答:采用穷举法。一元等于100分,考虑5分最多20枚,2分最多50枚,余下是1分硬币。
Private Sub Form_Click()
For i = 0 To 20 ‘i表示5分硬币数量
For j = 0 To 50 ‘j表示2分硬币数量
k = 100 - 5 * i - 2 * j ‘k表示1分硬币数量
If k + i + j = 50 Then
Print i, j, k
End If
Next j
Next i
End Sub
(17) 编写程序,建立并输出一个10×10的矩阵,该矩阵两条对角线上的元素为1,其余元素均为0。
解答:
Option Base 1
Private Sub Form_Click()
Dim a(10, 10) As Integer
For i = 1 To 10
For j = 1 To 10
a(i, j) = 0
If i = j Then a(i, j) = 1
If i + j = 11 Then a(i, j) = 1
Next j
Next i
For i = 1 To 10
For j = 1 To 10
Print a(i, j); " ";
If j = 10 Then Print ‘换行
Next j
Next i
End Sub
版权声明:本文标题:一、VB基本知识及选择、循环结构习题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702699887h427303.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论