VB答案黄色那本.docx

上传人:b****6 文档编号:7871994 上传时间:2023-01-26 格式:DOCX 页数:42 大小:805.06KB
下载 相关 举报
VB答案黄色那本.docx_第1页
第1页 / 共42页
VB答案黄色那本.docx_第2页
第2页 / 共42页
VB答案黄色那本.docx_第3页
第3页 / 共42页
VB答案黄色那本.docx_第4页
第4页 / 共42页
VB答案黄色那本.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

VB答案黄色那本.docx

《VB答案黄色那本.docx》由会员分享,可在线阅读,更多相关《VB答案黄色那本.docx(42页珍藏版)》请在冰豆网上搜索。

VB答案黄色那本.docx

VB答案黄色那本

1.3.4程序设计题

【习题1-49】编写一个华氏温度F与摄氏温度C之间转换的应用程序,界面如图1-4所示。

其中F与C之间的关系为:

参考程序如下:

2012-10-2615:

57上传

下载附件(15.91KB)

PrivateSubCommand1_Click()

DimfAsSingle,cAsSingle

f=Val(Text1.Text)

c=(f-32)*5/9

Text2.Text=Str(C)

EndSub

PrivateSubCommand2_Click()

DimfAsSingle,cAsSingle

c=Val(Text2.Text)

f=9/5*c+32

Text1.Text=Str(f)

EndSub

【习题1-50】编程将弧度值转换为角度值(度、分、秒)的形式,然后在窗体上显示出来。

程序运行界面如图1-5所示。

【提示】利用InputBox()输入弧度值,首先把弧度值转换为原始角度值,然后取整得到角度值,再把原始角度值减去度值,将结果转化为分值,采用类似思维即可求出结果。

参考程序如下:

2012-10-2616:

31上传

下载附件(12.72KB)

PrivateSubForm_Click()

DimsAsSingle,aAsInteger,bAsInteger,cAsInteger

ConstpiAsSingle=3.14159

s=Val(InputBox("请输入弧度值:

"))

s1=s

s=s*180/pi

a=Int(s)

s=s-a

s=s*60

b=Int(s)

s=s-b

c=s*60

Print"输入的弧度值"&s1;"对应的角度值为:

"

Printa&"度"&b&"分"&c&"秒。

"

EndSub

2.3.6设计程序题

源程序见文件夹“第二章习题66-75答案”

【习题2-66】公用电话收费标准如下:

通话时间在3分钟以内,收费0.5元;3分钟以上,则每超过1分钟加收0.15元。

编写程序,计算某人通话S分钟时应缴的电话费。

PrivateSubCommand1_Click()

DimtAsSingle,fAsSingle

t=Val(Text1.Text)

Ift<=3Then

f=0.5

Else

f=0.5+(-(Int(-(t-3))))*0.15

EndIf

Text2.Text=f&"元"

EndSub

【习题2-67】写程序找出能被2,3,5除时余数均为1的最小的10个自然数。

PrivateSubForm_Click()

n=0:

k=0

Do

n=n+1

IfnMod2=1AndnMod3=1AndnMod5=1Then

k=k+1

Printn;

EndIf

LoopWhilek<10

EndSub

【习题2-68】编写程序,计算。

PrivateSubForm_click()

DimsAsSingle,nAsInteger

n=Val(InputBox("请输入计算项数n:

"))

Fori=1Ton

s=s+(-1)^(i-1)*1/(2*i-1)

Nexti

Print"s=";4*s

EndSub

【习题2-69】编写程序,计算1×2×3×…×n,找出能使计算结果大于106的n的值。

PrivateSubForm_Click()

DimsAsDouble,nAsInteger

n=0

s=1

Do

n=n+1

s=s*n

Prints

LoopWhiles<=1E+20

Print"满足要求的n=";n

EndSub

【习题2-70】凡是满足x2+y2=z2的正整数数组(x,y,z)就称为勾股数组(如3,4,5)。

请找出任意一个正整数n(通过InputBox函数输入)以内的所有勾股数组。

PrivateSubForm_Click()

DimnAsInteger

Cls

n=Val(InputBox("请输入正整数n:

"))

Forx=1Ton

Fory=1+xTon'避免重复数对出现

Forz=1Ton

Ifx*x+y*y=z*zThenPrintx;y;z

Nextz

Nexty

Nextx

EndSub

【习题2-71】某正整数与3的和是5的倍数,与3的差是6的倍数。

设计程序,求出符合此条件的最小正整数。

PrivateSubForm_Click()

DimnAsInteger

n=0

Do

n=n+1

LoopUntil(n+3)Mod5=0AndAbs(n-3)Mod6=0

Print"满足条件的最小正整数是=";n

EndSub

【习题2-72】设计程序输出如图2-26所示的“乘法九九表”

2012-10-2910:

59上传

下载附件(34.94KB)

PrivateSubForm_Activate()

Me.Width=7000:

Me.Height=2500

EndSub

PrivateSubForm_Click()

Fori=1To9

Forj=1Toi

Ifi*j<10Andj>1Then

Printi;"*";j;"=";i*j;

Else

Printi;"*";j;"=";i*j;

EndIf

Nextj

Print

Nexti

EndSub

3.3.6程序设计题

【习题3-37】有5个小孩坐在一起,问第5个小孩多少岁?

他说比第4个小孩大2岁;问第4个小孩岁数,他说比第3个小孩大2岁;问第3个小孩,又说比第2个小孩大2岁;问第2个小孩,说比第1个小孩大2岁;最后问第1个小孩,他说是10岁。

用递归算法求出第5个小孩的年龄。

参考程序如下:

PrivateSubForm_Click()

Print"第5个小孩的年龄为:

";age(5)

EndSub

Functionage(nAsInteger)AsInteger

DimcAsInteger

Ifn=1Then

c=10

Else

c=age(n-1)+2

EndIf

age=c

EndFunction

【习题3-38】编写程序求S=A!

+B!

+C!

的值。

阶乘的计算分别用Sub过程和Function过程两种方法来实现。

参考程序如下:

PrivateSubForm_Click()

DimaAsInteger,bAsInteger,cAsInteger,sAsInteger

a=InputBox("Inputa:

")

b=InputBox("Inputb:

")

c=InputBox("Inputc:

")

CallfacProc(a)'调用过程

CallfacProc(b)

CallfacProc(c)

s=a+b+c

's=facFunc(a)+facFunc(b)+facFunc(c)'函数实现

Print"三个数的阶乘之和为:

";s

EndSub

PublicSubfacProc(nAsInteger)'求阶乘的过程

DimtAsInteger,iAsInteger

t=1

Fori=1Ton

t=t*i

Nexti

n=t

EndSub

PrivateFunctionfacFunc(nAsInteger)AsInteger'递归求阶乘的函数

Ifn<=0Then

MsgBox"正整数才有阶乘!

"

Else

Ifn=1Then

facFunc=1

Else

facFunc=n*facFunc(n-1)

EndIf

EndIf

EndFunction

【习题3-39】编写过程,使用辗转相减法求两个数的最大公约数。

参考程序如下:

PublicFunctiongcd(mAsInteger,nAsInteger)AsInteger

DoWhilem<>n

DoWhilem>n

m=m-n

Loop

DoWhilen>m

n=n-m

Loop

Loop

gcd=m

EndFunction

PrivateSubForm_Click()

DimaAsInteger,bAsInteger

a=InputBox("请输入第1个数:

")

b=InputBox("请输入第2个数:

")

Print"最大公约数为:

"&gcd(a,b)

EndSub

【习题3-40】编写一个过程,以整型数作为形参。

当该参数为奇数时。

输出False;当该参数为偶数时,输出True。

参考程序如下:

PrivateSubOddEven(nAsInteger)

IfnMod2Then

Print"False"

Else

Print"True"

EndIf

EndSub

PrivateSubForm_Click()

DimaAsInteger

a=InputBox("请输入一个数:

")

OddEven(a)

EndSub

4.3.4程序设计题

【4-29】

PrivateSubHScroll1_Change()

Timer1.Interval=HScroll1.Value

EndSub

PrivateSubTimer1_Timer()

Image1.Visible=NotImage1.Visible

EndSub

【4-30】

PrivateSubForm_Load()

Dialog1.Flags=3'包含屏幕字体和打印机字体

EndSub

PrivateSubmenuFormatColor_Click()

Dialog1.ShowColor

Text1.ForeColor=Dialog1.Color

EndSub

PrivateSubmenuFormatFont_Click()

Dialog1.ShowFont'显示"字体"对话框

Text1.FontName=Dialog1.FontName

Text1.FontSize=Dialog1.FontSize

EndSub

5.3.6程序设计题

【5-23】程序代码

PrivateSubForm_Click()

Cls

Randomize

Form1.Scale(-2,2)-(2,-2)'定义坐标系

Form1.DrawWidth=3

Fori=1To150

x=Rnd*4-2'随机产生直线终点坐标

y=Rnd*4-2

Form1.Line(0,0)-(x,y),QBColor(Int(Rnd*15)+1)

Nexti

EndSub

说明:

①由于所有直线的起点都在中心位置,所以对窗体定义合适的坐标系,决定了程序实现的难易度。

②虽然是随机直线,但所有的直线都没有超出窗体范围,用随机函数生成直线终点坐标时要设定范围。

【5-24】程序代码

PrivateSubPicture1_Click()

Dimr,x,y,w,h

w=Picture1.ScaleWidth

h=Picture1.ScaleHeight

Ifw>=hThen

r=w\30

x=r:

y=h/2

Picture1.Circle(x,y),r,vbRed

Fori=2To15

Picture1.CircleStep(2*r,0),r

Nexti

Else

r=h\30

x=w\2:

y=r

Picture1.Circle(x,y),r,vbRed

Fori=2To15

Picture1.CircleStep(0,2*r),r

Nexti

EndIf

EndSub

【5-25】程序代码

PrivateSubForm_Load()

Timer1.Interval=50

EndSub

PrivateSubTimer1_Timer()

Cls

Scale(-2,4)-(2,-1)

Line(-2,0)-(2,0)

Line(0,4)-(0,-1)

Fork=-1.8To1.8Step0.01

y=k^2

PSet(k,y)

Nextk

Staticx

FillColor=vbBlue

FillStyle=0

Ifx>1.8Thenx=-1.8

x=x+0.05

y=x^2

Circle(x,y),0.2'画圆

EndSub

思考

①去掉Cls,运行结果如何?

②语句Staticx的作用是什么?

去掉Staticx语句,在何处添加什么语句可达到相同的效果?

【5-26】程序代码

PrivateSubForm_Load()

ScaleMode=3

EndSub

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Randomize

IfButton=2Then

r=Int(Rnd*90+10)

c=RGB(Rnd*256,Rnd*256,Rnd*256)

FillStyle=Int(Rnd*8)

FillColor=RGB(Rnd*256,Rnd*256,Rnd*256)

IfX>rAndY>rAndX+r

Circle(X,Y),r,c

EndIf

EndIf

EndSub

【说明】

①表达式Button=2,表示按下鼠标右键。

②由于半径的单位为像素,故在Form_Load()中,将ScaleMode设置为3。

③函数RGB(Rnd*256,Rnd*256,Rnd*256)用于随椭机产生任意颜色。

④函数Int(Rnd*8),其取值范围为0到7的整数,用于随机产生填充方式。

⑤表达式X>rAndY>rAndX+r

【5-27】程序代码

PrivateSubForm_Click()

Randomize

Cls

Dimx(1To5)

Fork=1To5'产生随机数

x(k)=Int(Rnd*9000+1000)

Nextk

Scale(-0.5,10100)-(6,-2000)'自定义坐标系

Line(0,10000)-(0,-0)'画纵轴

Line(0,0)-(5.5,0)'画横轴

Fork=1To5'画直方图

Line(k-0.5,x(k))-(k,0),,BF

Nextk

CurrentY=-200

Fork=1To5'标横轴的数字

CurrentX=(k-0.5)

Printx(k);

Nextk

EndSub

【说明】

①随机产生的5个数必须放入数组中,以后画矩形块和标注数字要用到。

②自定义坐标的设置语句Scale(-0.5,10100)-(6,-2000):

要画5个直方图,横坐标1到5,每个直方图的宽度为0.5,为了美观,所以将横坐标设置为-0.5到6;画直方图高度为1000-10000,纵坐标最大为1000,为了美观,将纵坐标最大值设置为10100,为了标注横坐标数字,所以将纵坐标设置为-2000到10100。

③由于标注横坐标数字要标注在直方图下方,所以将CurrentY设置为-200。

【5-28】方法一:

程序代码(用默认坐标)

PrivateSubForm_Click()

ConstD=3.14159/180'角度转换成弧度的转换常数

ConstA=500'正弦波的振幅

Fork=0To900Step0.01'画出两个半周期(900°)

PSet(k*3,700)'画出基准轴

PSet(k*3,700-A*Sin(k*D)),vbRed'画出红色的正弦曲线

Nextk

EndSub

方法二:

程序代码(用自定义坐标)

PrivateSubForm_Click()

Cls

ConstD=3.14159/180'角度转换成弧度的转换常数

Scale(0,1.5)-(920,-1.5)'自定义坐标系

Fork=0To900Step0.1'画出两个半周期(900°)

PSet(k,0)'画出基准轴

PSet(k,Sin(k*D)),vbRed'画出红色的正弦曲线

Nextk

EndSub

7.5.1程序设计题

【习题7-1】程序代码

PrivateSubOption1_Click()

Text3.Text=Val(Text1.Text)+Val(Text2.Text)

EndSub

PrivateSubOption2_Click()

Text3.Text=Val(Text1.Text)-Val(Text2.Text)

EndSub

PrivateSubOption3_Click()

Text3.Text=Val(Text1.Text)*Val(Text2.Text)

EndSub

PrivateSubOption4_Click()

IfVal(Text2.Text)<>0Then

Text3.Text=Val(Text1.Text)/Val(Text2.Text)

Else

Text3.Text="除数为0,计算无效"

EndIf

EndSub

【习题7-2】程序代码

PrivateSubOption1_Click()

Text2.Alignment=0

EndSub

PrivateSubOption2_Click()

Text2.Alignment=1

EndSub

PrivateSubOption3_Click()

Text2.Alignment=2

EndSub

PrivateSubText1_Click()

Text1.FontSize=HScroll1.Value

IfOption1.ValueThenText1.Alignment=0

IfOption2.ValueThenText1.Alignment=1

IfOption3.ValueThenText1.Alignment=2

EndSub

PrivateSubHScroll1_Change()

Text2.FontSize=HScroll1.Value

EndSub

【习题7-3】程序代码

PrivateSubForm_Click()

x=Val(InputBox("请输入一个接近于1的小数","输入"))

s=1

n=0

s1=1

DoWhiles1>0.000001

n=n+1

s1=s1*x/n

s=s+s1

Loop

Print"计算结果=";s

EndSub

【习题7-4】程序代码

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Cls

IfX

r1=X

Else

r1=Me.ScaleWidth-X

EndIf

IfY

r2=Y

Else

r2=Me.ScaleHeight-Y

EndIf

Ifr1

Circle(X,Y),r

EndSub

7.5.2程序改错题

【习题7-5】“*”号标记的错误语句更正如下:

①a(1To50)AsString

②Chr(Int(Rnd*26+97))

③iMod10=0

④a(i)="a"

【习题7-6】“*”号标记的错误语句更正如下:

①DimXAsInteger

②Fork=2ToX–1(或Fork=2ToX/2或Fork=2ToSqr(X)+1)

③IfXModk=0Thenf=False:

ExitFor

④IffThen(或Iff=TrueThen)

六、程序设计题(每小题10分,共20分)

1.

PrivateSubCommand1_Click()

Dima(0To9)AsInteger

s=Text1.Text

Fori=1ToLen(s)

c=Val(Mid(s,i,1))

a(c)=a(c)+1

Nexti

Forj=0To9

Label1.Caption=Label1.Caption&j&"出现的次数="&a(j)&Chr(13)&Chr(10)

Nextj

EndSub

2.

PrivateSubForm_Click()

DimhouseAsSingle,mAsSingle,wAsSingle,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1