潘地林VB课后答案_第1页
潘地林VB课后答案_第2页
潘地林VB课后答案_第3页
潘地林VB课后答案_第4页
潘地林VB课后答案_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章习翘解答

一、基本概念题

1.说明下列哪些是VisualBasic合法的直接常量,并分别指出它们的类型。

100.0%1001E1123D3123,4560100

"ASDF""1234.5"#2004/10/7#100#兀

&O78&H123TrueT1123!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、n、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的合法变量名?

A123al2_3123_aa,123a123Integer

XYZFalseSin(x)变量名sinx叮

答:变量命名的规则是:必需以字母或汉字开头,其后可以是下划线、字母、汉字和数

字,长度小于255个字符;不能使用VB的关键字。本题中,合法的变量名是:A123、

al2_3>XYZ、变量名、sinx、兀;不合法的变量名是:123_a(不能用数字开头)、aJ23(不

能用逗号)、a123(不能有空格)、False、Sin(x)(VB的关键字)

4.把下列数学表达式写成VisualBasic表达式。

(1)Ix+yI+z5(2)(1+xy6

10+3y2

(3)(4)-b+b-4ac

xy2a

1e10+In10

(5)(6)sin45+o

111x+y+1

r+r+r

123

答:(1)abs(x+y)+zA5

(2)(l+x*y)A6

91(3)(10*x+Sqr(3*y))/(x*y)

(4)(-b+Sqr(b*b-4*a*c))/(2*a)

(5)l/(l/rl+l/r2+l/r3)

(6)Sin(3.14159*45/180)+(Exp(10)+log(10))/Sqr(x+y+l)

5.写出下列表达式的值:

(1)123+23Mod10\7+Asc(MAn)

(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)aA2/4

(3)a/2+3\2(4)aMod3+bA3/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+27X4/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(99100)/2)(6)Sgn(7*3+2)

(7)LCase("HellowVB!")(8)Mid("HellowVB!",4,3)

(9)Left("HellowVB!",3)(10)Val(“16个力n23个”)

(11)Str(459.55)(12)UCase("VisualBasic")

答:

(1)Int(-3.14159)=-4

(2)Fix(-3.14l59)=-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"

92(12)UCase("VisualBasic")="VISAULBASIC"

二、选择题

1.可以同时删除字符串前导和尾部空格的函数是。

A.LtrimB.RtrimC.TrimD.Mid

2.函数Int(Rnd(l)*10)是在哪个范围产生随机整数.

A.(0,1)B.(0,9)C.(1J0)D.(l,9)

3.数学式子sin25°写成VisualBasic表达式是。

A.Sin25B.Sin(25)C.Sin(25°)D.Sin(25*3.14/180)

4.表达式16/4-2A3*8/4Mod5\2的值是

A.14B.4C.20D.2

5.数学关系式3£x<10表示成正确的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+l

9.为了给x,y,z三个变量赋初值1,正确的赋值语句是。

A.x=l:y=l:z=lB.x=l,y=l,z=lC.x=y=z=lD.x,y,z=l

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的值互换o

A.a=b:b=aB,a=a+b:b=ab:a=ab

C.a=c:c=b:b=aD.a=(a+b)/2:b=(ab)/2

14.下列四个字符串进行比较,最小的是

A.'19977"B.“B123”C.“Basic"DJ'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<b+c

18.语句PrintFormat(“HELLO",“<”)的输出结果是。

A.HELLOB.helloC.HeD.he

19.MsgBox()函数的返回值的类型是。

93A.整数B.字符串C.逻辑值D.日期

20.用语句DimA(3to5)AsLong定义的数组元素个数是。

A.7B.8C.9D.10

解答:

1.选CoTrim函数可以除去字符串两端的空格,而Ltrim、Rtrim则分别除去字符串

左端或右端的空格。

2.选B«Rnd函数返回一个0〜1(不包括1)的单精度小数,乘以10后用Int函

数取整,得到的数应在0〜9之间。

3.选D。VB中,所有三角函数的参数必须用弧度代入计算,反三角函数的返回值是

弧度。

4.选B。因为16/42A3*8/4Mod5\2=4-8*8/4Mod2=4-16Mod2=4-0=4„

5.选B«表示变量x大于等于3而且小于9,应注意这里不能使用数学式子的习惯用

法。

6.选B。Left(a,4)的值是“1234”Mid(44,2)的值是“34”两字符串连接后再由Vai

函数转变为数值123445。

7.选A。在VB中,西文字符、中文字符和数字都是一个字符长度,字符串长度就等

于字符的个数。

8,选Co赋值号左边只能是变量,不能是表达式,故A是错误的;B、D中的均有不

合法的变量名。

9.选A。选项B、D语法错误,选项C是一关系表达式。

10.选D。数值型数据与字符串相加时,如果字符串是数字,VB把字符串转变为数值

后,再相加;字符串不是数字时,系统提示出错。

11.选人。由逻辑运算符组成的表达式是逻辑表达式。

12.选Bo

13.选B»

14.选A。字符串的比较是按字符的ASCII码值从左到右一一比较,先大为大。

15.选A。

16.选D。表达式a+b=c是关系表达式,如果a+b的值等于c,则表达式的值为True,

否则为False,

17.选CoVB中的不等号只能用<>。

18.选Bo在格式输出函数中,<”是强制小写符号。

19.选A。MsgBox()函数的返回值是一个整型数,记录了用户在消息框中选择了哪一

个按钮。

20.选Co定义的数组元素个数是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.表

示*是5的倍数或是9的倍数的逻辑表达式为*乂0~5=00!^乂W9=0。()6.Len("

等级考试")和LenB("等级考试”)的结果相同。()7.VB6.0中字符串常量是用双引

号或单引号括起来的字符串。()

948.PrintInStr("VisualBasic",T)的结果为0。()9.固定数组中的数组

元素个数一旦定义好后,在程序运行过程中不再会发生变化,并且数组

中数组元素的值也不会变化。()10.数组元素的下标可以是常数、变量或表

达式。()11.在For-Next循环中,其中Step步长可以是正数,也可以是负数。

()12.在Do--Loop[WhileIUntil]循环中,While关键字或Until关键字必须选择

其中之一。

()

13.在For...Next循环中,ExitFor子句是可选项,它可以放置在循环体语句中的任何位

置。

()

14.动态数组在定义时已被分配存储空间。()15.在VB6.0中,OptionBase语

句的参数只能是0或1。()解答:

1.错。&H12是16进制的数值常数,8进制数值常数的前缀是&0。

2.对。数值型数据与字符串相加时,如果字符串是数字,VB把字符串转变为数值后,再

相加。3.对。Left$(A$,4)的返回值是"8765",Mid$(A$,4,2)的返回值是"54",两个字符串相

加后,

再由Vai函数转换成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

95Print”及格”

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的值为16o

3.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

DimxAsInteger

Fori=1To3

Forj=1Toi

Fork=jTo3

x=x+1

Nextk

Nextj

Nexti

Printx

EndSub

答:输出结果是x=14o这是一个3重循环,最内层的循环体共执行14次,每次加

lo4.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

DimxAsInteger

x=0

DoWhilex<50

x=(x+2)*(x+3)

n=n+1

Loop

Print"x=':x;nn=";n

EndSub

答:输出结果是x=72n=2。本程序执行循环2次,第1次循环,x的值为6,n值为

I;第2次循环,x的值为72,n值为2。x大于50时,循环终止。

5.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

DimxAsInteger,aAsInteger

x=0

96Forj=1TO5

a=a+j

Nextj

Printx,a

EndSub

答:输出结果是615。竭x中保存的是循环变量j的终止值6o循环体执行了5

次,故a的值是15。

6.以下程序的循环次数是。

Forj=8To35Step3

Printj;

Nextj

答:循环体共执行Int((358)/3+l)=10次。

7.执行以下程序输入4后,程序输出的结果是。

PrivateSubForm_Click()

x=InputBox(x)

IfxA2<15Theny=1/x

IfxA2>15Theny=xA2+1

Printy

EndSub

答:输出结果是17。因为M2=16>15,故程序执行y=xA2+l=17o

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

答:输出结果是lOlo程序中使用的是后测型循环结构。循环体执行1次后,变量a的

值变为101,满足循环结束条件,故循环终止。

10.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

a="ABCD"

97b="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$o程序循环执行时,Len(a)的返回值始终是1,Str(Len(a)+k)

的值分别是2、3、4o字符串连接符&把两个字符连接在一起。

14.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

k=0:a=0

DoWhilek<70

k=k+2

k=k*k+k

a=a+k

Loop

Printa

98EndSub

答:输出结果是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

答:出结果是113o程序中的循环体执行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=3To0Step1

s=s+a(i)*j

j=j*10

Nexti

Prints

EndSub

答:输出结果是1234。程序中的循环体执行4次,变量s的值为4+30+200+1000=1234o

17.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

DimM(10)

Fork=1To10

M(k)=11k

Nextk

x=6

PrintM(2+M(x))

EndSub

答:输出结果是4o循环执行完成后数组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

99Nexti

Fori=1To3

p(i)=a(i*i)

Nexti

Fori=1To3

k=k+p(i)*2

Nexti

Printk

EndSub

答:输出结果是33。前两个循环执行完成后数组a的值为(1,2,3,4,5,6,7,8,

9,10),数组p的值为(1,3,9)。第3个循环执行后,k=5+lX2+4X2+9X2=33o

19.执行以下程序后,输出的结果是。

PrivateSubForm_Click()

Dima(10,10)AsInteger

Fori=2To4

Forj=4To5

a(i,j)=i*j

Nextj

Nexti

Printa(2,5)+a(3,4)+a(4,5)

EndSub

答:输出结果是42。程序中数组a定义了11X11=121个元素,但循环语句只对其中

的部分元素赋了值。其中a(2,5)的值是10,a(3,4)的值是12,a(4,5)的值是20,三者之和

是42o

20.以下程序运行的结果是。

OptionBase1

PrivateSubCommandl_Click()

Dima,b(3,3)

a=array(1,2,3,4,5,6,7,8,9)

Fori=lTo3

Forj=lTo3

b(i,j)=a(i*j)

If(j>=i)ThenPrintTab(j*3);Format(b(i,j),M###");

Nextj

Print

Nexti

EndSub

A.123B.1C.147D.l23

4564524646

7897893699

答:输出结果是选项D。

五、填空题

1.在VB中声明符号常量的关键字是。

1002.设a=l、b=2、c=3,则VB6.0表达式:a<borb<candc<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.使用数组声明语句Dima(3,-2To2,5),则数组a包含元素的个数有。9.For-

Next循环的<step>子句缺省时,循环变量每次改变的值是。

10.填入正确的内容,使得程序运行后,能在窗体上打印如图221所示的图案。

PrivateSubForm_Click()

Print

Fori=1To4

PrintTab(8i);

Forj=1To8

Print"*”;

Print

Nexti

EndSub图221第10题的程序运行结果

11.下面程序的功能是利用随机函数产生10个1〜100之间的随机整数,打印其中能被5整

除的数并求其和,试填入正确的内容。

PrivateSubForm_Click()

DimsumAsInteger,xAsInteger

Fori=1To10

x=Int(Rnd*100+1)

If=0Then

sum=sum+x

Print"x=^x

EndIf

Nexti

Ifsum<>OThen

Print"sum='isum

EndIf

EndSub

12.填入正确的内容,使得以下程序能够找出50以内所有能构成直角三角形的整数。

PrivateSubForm_Click()

DimaAsInteger,bAsInteger

DimcAsSingle

Fora=1To50

Forb=aTo50

c=Sqr(aA2+bA2)

IfThenPrinta,b,c

Nextb

Nexta

101EndSub

13.填入正确的内容,得以下程序能够计算1+1/3+1/5+……+1/(2N+1),到1/QN+1)小

于10。5

PrivateSubForm_Click()

sum=1:n=1

Do

n=n+2

temp=1/n

sum=sum+temp

Iftemp<0.00001Then

Loop

Print"N=M;n

Print"sum='isum

EndSub

14.某大奖赛,有7位评委给参赛选手打分。以下程序是输入7位评委对某选手的打分后,

去掉最高分和最低分后计算其平均值作为该选手的成绩。试填空使得程序能正确运行。

PrivateSubForm_CIick()

sum=0

Fori=1To7

cj=Val(InputBox("请输入第“&i&”位评委的打分”,“录入"))

Ifi=IThen

Max=cj

Min=cj

Else

IfMin>cjThen

Min=cj

ElselfMax<cjThen

Max=cj

EndIf

EndIf

sum=sum+cj

Nexti

aver=

Print”该选手的成绩为:aver

EndSub

15.以下程序用随机函数模拟掷骰子,统计掷50次骰子出现各点的次数,试填入正确的内

容。

PrivateSubForm_Click()

Dima(lTo6)AsInteger

Randomize

Fori=1To50

n=

a(n)=a(n)+1

Nexti

Fori=1To6

Printi;"点出现”;a(i);"次“

102Nexti

EndSub

解答:

1.Const

2.True

3.

4.YYY

5.11

6.CDEF

7.1234.56

8.120

9.1

10.Nextj

11.xMod5

12.c=Int(c)Andc<=50

13.ExitDo

14.(sum-Max-Min)/5

15.Int(Rnd*6)+1

六、编程题

1.在图222中半径”的文本框(Textl)中输入圆的半径值后,击计算面积”钮

(Command1)“计算周长”按钮(Command2),其计算结果将显示在结果后的文本框(Text2)

中。试写出控件的相关事件代码,以完成上述各功能。

图222第1题程序的运行界面

解答:

文本框接收的数据为字符串类型,应注意数据类型的转换,体会数据类型的自动转换功

能。程序代码如下:

PrivateSubCommandl_Click()

Text2.Text=3.14*Val(Textl,Text)A2

EndSub

PrivateSubCommand2_Click()

Text2.Text=2*3.14*Val(Textl.Text)

EndSub

1032.设计如图223所示的界面,根据在文本框中输入的里程数计算费用。计算公式:

3公里之内为6元,超过3公里小于等于30公里按每公里1.5元加收,超过30公里按每公

里1.8元加收。

图223程序运行界面

解答:

本题主要考查分支结构的应用,本题计算车费有多种情形,选择多分支语句较合适。程

序代码如下:

PrivateSubCommandl_Click()

N=Val(Text1.Text)

SelectCaseN

CaseIs<=0

MsgBox(”请输入数据”)

CaseIs<3

Y=6

CaseIs<30

Y=6+(N3)*1.5

CaseElse

Y=6+27+(N30)*1.8

EndSelect

Label3.Caption二”车费为“&Y&“元”

EndSub

PrivateSubCommand2_Click()

Textl.Text=,H,

Label3.Caption二””

EndSub

3.编写程序将l~100自然数中能同时被3和5整除的数打印出来,并统计其个数。

解答:

一个整数能被另一整数整除的条件是:它们相除时余数为零。

PrivateSubForm_Click()

DimiAsInteger,nAsInteger

Fori=1To100

IfiMod3=0AndiMod5=0Then,能够同时被3和5整除的条件

Printi

n=n+1

104EndIf

Nexti

Print”1-100自然数中能同时被3和5整除的个数为:n

EndSub

4.我国现有人口13亿,设年增长率为0.75%,试编写程序,计算多少年后将超过16亿。

解答:

本题有两种解法,可以根据公式:

16=13(1+0.0075)n

直接利用标准函数对数求得:

n=Log(16/13)/Log(1+0.0075)

也可以利用循环求得:

PrivateSubForm_Click()

x=13

n=0

DoWhilex<16

x=x*1.0075

n=n+1

Loop

Printn;“年后我国人口将超过16亿,达到”;x;“亿“

EndSub

5.编写程序输出100〜200之间不能被3整除的自然数。

解答:

PrivateSubForm_Click()

DimiAsInteger,nAsInteger

Fori=100To200

IfiMod3oOThen,不能够被3整除的条件

Printi;”

n=n+1'使用变量n来控制每行输出5个数据

Ifn=5ThenPrint:n=0

EndIf

Nexti

EndSub

6.设计程序,求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。

解答:

PrivateSubForm_Click()

DimnAsInteger,sAsSingle

s=0

n=Val(InputBox("请输入n:H)),n由Inputbox函数输入再转换为数值型数据

Fori=1Ton

Forj=1Toi

s=s+j

Nextj

Nexti

105Prints

EndSub

7.编写程序计算S的近似值,直到最后一项的绝对值小于10为止,并用Print方法输出计

算5

结果。其中:

111k+1

S=1-2+3-4+KK+(-1)K

解答:

PrivateSubForm_Click()

DimsAsSingle,kAsLong

s=0

k=1

Do

s=s+(l)A(k+l)/k

k=k+1

LoopUntil1/k<0.00001

Prints

EndSub

8.假设某项税收的规定如下:

1收入在500元以内,免征;

1收入在500〜1000元内,超过500元的部分纳税3%;

1收入超过1000元时,超过的部分纳税4%;

1收入超过2000元时,超过的部分纳税5%o

试编程实现上述操作。

解答:

PrivateSubForm_Click()

DimincomeAsSingle,taxAsSingle

income=Val(InputBox(”请输入收入:"))

income由Inputbox函数输入再转换为数值型数据

SelectCaseincome

CaseIs>2000

tax=500*0.03+1000*0.04+(income2000)*0.05

CaseIs>1000

tax=500*0.03+(income1000)*0.04

CaseIs>500

tax=(income500)*0.03

CaseElse

tax=0

EndSelect

Printtax

EndSub

9.编写程序,用InputBox()函数输入3个整数,打印其中最大的数。

解答:

PrivateSubForm_Click()

106DimmaxAsInteger,tempAsInteger

max=0

Fori=1To3

Print”输入第”;i;“个数”;

temp=Val(InpudBox("输入整数”))

Printtemp

Iftemp>maxThenmax=temp

Nexti

Print”你输入的最大的数是”;max

EndSub

10.编写程序,任意输入3个整数A、B、C,按由大到小顺序把它们打印出来。

解答:

PrivateSubForm_Click()

Dima%,b%,c%,t%

a=Val(InpulBox("输入整数a“,“数据输入”))

b=Val(InputBox("输入整数b「数据输入”))

c=Val(InputBox("输入整数c",“数据输入"))

Print”排序前a;"b;…;c

Ifa<bThen

t=a:a=b:b=t

EndIf

Ifa<cThen

t=a:a=c:c=t

EndIf

Ifb<cThen

t=b:b=c:c=t

EndIf

Print”排序后n;a;"b;"c

EndSub

x3x5x2n-1

11.编写程序,计算n-1,直到第n项的绝对值小

sinx»x-3!+5!+L+(-1)(2n-1!

于10为止。8

解答:

PrivateSubForm_CIick()

DimxAsSingle,tAsSingle,sinxAsSingle

i=1

sinx=0

x=Val(InputBox("请输入x的值(弧度)","数据输入"))

t=X

DoWhile(Abs(t)>0.00000001)

sinx=sinx+t

t=t*x*x/((i+1)*(i+2))

107i=i+2

Loop

Print”编程求得的sin(u;x;”)值为";sinx

Print”调用内部函数求得的sin(n;x;")值为";Sin(x)

EndSub

12.分别编写两个程序,在窗体上分别打印出如图224所示的图形。

图224两种不同的图案输出

解答:

打印左边图案:

PrivateSubForm_Click()

Print,打印一空行

Fori=5To1Stepl,步长为一1

PrintTab(10);'从第10列开始打印

PrintSpc(10i);'打印由Spc函数值规定的空格

Forj=1To2*i1

Print'打印三角形的"*"号

Nextj

Nexti

EndSub

打印右边图案:

PrivateSubForm_DblClick()

Print

Fori=lTo4

PrintTab(7);

PrintSpc(4i);

Forj=1To21

Print

Nextj

Nexti

Fori=5To1Step1

PrintTab(O);

PrintSpc(10i);

Forj=1To2*i1

Printn*M;

Nextj

Nexti

EndSub

10813.编写程序,输出1000之内的所有完数。完数”是指一个数恰好等于它的因子

之和,如6的

因子为1、2、3,而6=1+2+3,因而6是完数。

解答:

PrivateSubForm_Click()

Fori=1To1000

Sum=0

Fork=1Toi1

IfiModk=OThen

Sum=Sum+k

EndIf

Nextk

IfSum=iThen

Print"i=";i;”是完全数”

EndIf

Nexti

EndSub

14.-只小球从10米高度上自由落下,每次落地后反弹回原高度的40%,再落下。编程计

算小

球在第8次落地时,共计经过了多少米?

解答:

PrivateSubForm_Click()

h=10

Sum=10

Fori=1To7

h=0.4*h

Sum=Sum+2*h

Nexti

Print”小球第8次落地时,经过了";Sum;、米”

EndSub

15.编写程序,求出所有小于或等于100的自然数对。自然数对是指两个自然数的和与差都

是平

方数,如8和17的和为8+17=25与其差178=9都是平方数,则8和17就称为自然数对。

解答:

PrivateSubForm_Click()

DimiAsLong,jAsLong

DimaAsSingle,bAsSingle

Fori=1To100

Forj=IToi1

a=i+j

b=ij

IfSqr(a)=Int(Sqr(a))AndSqr(b)=Int(Sqr(b))Then

Printi,j

EndIf

Nextj

109Nexti

EndSub

16.找出100~999之间的所有“水仙花数”所谓“水仙花数”是一个三位数,其各位数的

立方

和等于该数本身,例如153=1+5+3,故153是“水仙花数”333

解答:

PrivateSubForm_Click()

DimpAsInteger

Forn=100To999

a=n\100

b=n\lOMod10

c=nMod10

p=aA3+bA3+cA3

Ifp=nThen

Printn;”是水仙花数”

EndIf

Nextn

EndSub

17.编写程序,在窗体上打印图225所示的“数字金字塔”

图2615打印"数字金字塔”

解答:

PrivateSubForm_Click()

Fori=1To9

PrintSpace(16i);

Forj=IToi

PrintFormat(j,"0M);

Nextj

Forj=i1To1Stepl

PrintFormat。,F");

Nextj

Print

Nexti

EndSub

18.用一元纸币兑换一分、二分和五分的硬币,要求兑换硬币的总数为50枚,编程列出所有

能的兑换方案。

110解答:

采用穷举法。一元等于100分,考虑5分最多20枚,2分最多50枚,余下是1分

硬币。

PrivateSubForm_Click()

Fori=0To20'i表示5分硬币数量

Forj=OTo50'j表示2分硬币数量

k=1005*i2*j'k表示1分硬币数量

Ifk+i+j=50Then

Printi,j,k

EndIf

Nextj

Nexti

EndSub

19.编写程序,建立并输出一个10X10的矩阵,该矩阵两条对角线上的元素为1,其余元素

均为

0o

解答:

OptionBase1

PrivateSubForm_Click()

Dima(10,10)AsInteger

Fori=1To10

Forj=1To10

a(i,j)=O

Ifi=jOri+j=11Thena(i,j)=1

Printa(i,j);MH;

Nextj

Print

Nexti

EndSub

111第3章习题解答

一、选择题

1.若要设置计时器控件的定时时间,可通过属性来设置。

A.IntervalB.ValueC.EnabledD.Text

2.若要多列显示列表项,可通过设置列表框对象的属性来实现。

A.ColumnsB.MultiSelectC.StyleD.List

3.若要获知列表框中列表项的数目,可通过访问属性来实现。

A.ListB.ListindexC.ListCountD.Text

4.若要向列表框新增列表项,可使用的方法是。

A.AddB.RemoveC.ClearD.Additem

5.若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论