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|xy|z(1xy)(1) (2)

10x3ybb24acxy2a(3) (4)

110111eln10sin45xy1rr2r3 (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)数学关系式3x10表示成正确的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

Print

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()

Print

For i = 1 To 4

Print Tab(8 - i);

For j = 1 To 8

Print "*";

( )

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方法输出计算结果。其中:

S1解答:

1111(1)k1234K

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

x3x5x2n1n1sinxx(1)3!5!(2n1)!直到第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()

Print

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

Print

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


本文标签: 程序 函数 字符串 循环 常量