VB答案黄色那本Word格式文档下载.docx
《VB答案黄色那本Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VB答案黄色那本Word格式文档下载.docx(42页珍藏版)》请在冰豆网上搜索。
&
s1;
"
对应的角度值为:
Printa&
度"
b&
分"
c&
秒。
2.3.6设计程序题
源程序见文件夹“第二章习题66-75答案”
【习题2-66】公用电话收费标准如下:
通话时间在3分钟以内,收费0.5元;
3分钟以上,则每超过1分钟加收0.15元。
编写程序,计算某人通话S分钟时应缴的电话费。
DimtAsSingle,fAsSingle
t=Val(Text1.Text)
Ift<
=3Then
f=0.5
Else
f=0.5+(-(Int(-(t-3))))*0.15
EndIf
Text2.Text=f&
元"
【习题2-67】写程序找出能被2,3,5除时余数均为1的最小的10个自然数。
n=0:
k=0
Do
n=n+1
IfnMod2=1AndnMod3=1AndnMod5=1Then
k=k+1
Printn;
LoopWhilek<
10
【习题2-68】编写程序,计算。
PrivateSubForm_click()
DimsAsSingle,nAsInteger
n=Val(InputBox("
请输入计算项数n:
Fori=1Ton
s=s+(-1)^(i-1)*1/(2*i-1)
Nexti
s="
;
4*s
【习题2-69】编写程序,计算1×
2×
3×
…×
n,找出能使计算结果大于106的n的值。
DimsAsDouble,nAsInteger
n=0
s=1
s=s*n
Prints
LoopWhiles<
=1E+20
满足要求的n="
n
【习题2-70】凡是满足x2+y2=z2的正整数数组(x,y,z)就称为勾股数组(如3,4,5)。
请找出任意一个正整数n(通过InputBox函数输入)以内的所有勾股数组。
DimnAsInteger
Cls
请输入正整数n:
Forx=1Ton
Fory=1+xTon'
避免重复数对出现
Forz=1Ton
Ifx*x+y*y=z*zThenPrintx;
y;
z
Nextz
Nexty
Nextx
【习题2-71】某正整数与3的和是5的倍数,与3的差是6的倍数。
设计程序,求出符合此条件的最小正整数。
LoopUntil(n+3)Mod5=0AndAbs(n-3)Mod6=0
满足条件的最小正整数是="
【习题2-72】设计程序输出如图2-26所示的“乘法九九表”
2012-10-2910:
59上传
下载附件(34.94KB)
PrivateSubForm_Activate()
Me.Width=7000:
Me.Height=2500
Fori=1To9
Forj=1Toi
Ifi*j<
10Andj>
1Then
Printi;
*"
j;
="
i*j;
="
Nextj
Print
3.3.6程序设计题
【习题3-37】有5个小孩坐在一起,问第5个小孩多少岁?
他说比第4个小孩大2岁;
问第4个小孩岁数,他说比第3个小孩大2岁;
问第3个小孩,又说比第2个小孩大2岁;
问第2个小孩,说比第1个小孩大2岁;
最后问第1个小孩,他说是10岁。
用递归算法求出第5个小孩的年龄。
第5个小孩的年龄为:
age(5)
Functionage(nAsInteger)AsInteger
DimcAsInteger
Ifn=1Then
c=10
c=age(n-1)+2
age=c
EndFunction
【习题3-38】编写程序求S=A!
+B!
+C!
的值。
阶乘的计算分别用Sub过程和Function过程两种方法来实现。
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)'
函数实现
三个数的阶乘之和为:
s
PublicSubfacProc(nAsInteger)'
求阶乘的过程
DimtAsInteger,iAsInteger
t=1
t=t*i
n=t
PrivateFunctionfacFunc(nAsInteger)AsInteger'
递归求阶乘的函数
Ifn<
=0Then
MsgBox"
正整数才有阶乘!
facFunc=1
facFunc=n*facFunc(n-1)
【习题3-39】编写过程,使用辗转相减法求两个数的最大公约数。
PublicFunctiongcd(mAsInteger,nAsInteger)AsInteger
DoWhilem<
>
DoWhilem>
m=m-n
Loop
DoWhilen>
m
n=n-m
gcd=m
DimaAsInteger,bAsInteger
请输入第1个数:
请输入第2个数:
最大公约数为:
gcd(a,b)
【习题3-40】编写一个过程,以整型数作为形参。
当该参数为奇数时。
输出False;
当该参数为偶数时,输出True。
PrivateSubOddEven(nAsInteger)
IfnMod2Then
False"
True"
DimaAsInteger
请输入一个数:
OddEven(a)
4.3.4程序设计题
【4-29】
PrivateSubHScroll1_Change()
Timer1.Interval=HScroll1.Value
PrivateSubTimer1_Timer()
Image1.Visible=NotImage1.Visible
【4-30】
PrivateSubForm_Load()
Dialog1.Flags=3'
包含屏幕字体和打印机字体
PrivateSubmenuFormatColor_Click()
Dialog1.ShowColor
Text1.ForeColor=Dialog1.Color
PrivateSubmenuFormatFont_Click()
Dialog1.ShowFont'
显示"
字体"
对话框
Text1.FontName=Dialog1.FontName
Text1.FontSize=Dialog1.FontSize
5.3.6程序设计题
【5-23】程序代码
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)
说明:
①由于所有直线的起点都在中心位置,所以对窗体定义合适的坐标系,决定了程序实现的难易度。
②虽然是随机直线,但所有的直线都没有超出窗体范围,用随机函数生成直线终点坐标时要设定范围。
【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
r=h\30
x=w\2:
y=r
Picture1.CircleStep(0,2*r),r
【5-25】程序代码
Timer1.Interval=50
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'
画圆
思考
①去掉Cls,运行结果如何?
②语句Staticx的作用是什么?
去掉Staticx语句,在何处添加什么语句可达到相同的效果?
【5-26】程序代码
ScaleMode=3
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
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<
ScaleWidthAndY+r<
ScaleHeightThen
Circle(X,Y),r,c
【说明】
①表达式Button=2,表示按下鼠标右键。
②由于半径的单位为像素,故在Form_Load()中,将ScaleMode设置为3。
③函数RGB(Rnd*256,Rnd*256,Rnd*256)用于随椭机产生任意颜色。
④函数Int(Rnd*8),其取值范围为0到7的整数,用于随机产生填充方式。
⑤表达式X>
ScaleHeight用于判断画完整的圆。
【5-27】程序代码
Dimx(1To5)
Fork=1To5'
产生随机数
x(k)=Int(Rnd*9000+1000)
Scale(-0.5,10100)-(6,-2000)'
自定义坐标系
Line(0,10000)-(0,-0)'
画纵轴
Line(0,0)-(5.5,0)'
画横轴
画直方图
Line(k-0.5,x(k))-(k,0),,BF
CurrentY=-200
标横轴的数字
CurrentX=(k-0.5)
Printx(k);
①随机产生的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】方法一:
程序代码(用默认坐标)
ConstD=3.14159/180'
角度转换成弧度的转换常数
ConstA=500'
正弦波的振幅
Fork=0To900Step0.01'
画出两个半周期(900°
PSet(k*3,700)'
画出基准轴
PSet(k*3,700-A*Sin(k*D)),vbRed'
画出红色的正弦曲线
方法二:
程序代码(用自定义坐标)
角度转换成弧度的转换常数
Scale(0,1.5)-(920,-1.5)'
Fork=0To900Step0.1'
画出两个半周期(900°
PSet(k,0)'
画出基准轴
PSet(k,Sin(k*D)),vbRed'
画出红色的正弦曲线
7.5.1程序设计题
【习题7-1】程序代码
PrivateSubOption1_Click()
Text3.Text=Val(Text1.Text)+Val(Text2.Text)
PrivateSubOption2_Click()
Text3.Text=Val(Text1.Text)-Val(Text2.Text)
PrivateSubOption3_Click()
Text3.Text=Val(Text1.Text)*Val(Text2.Text)
PrivateSubOption4_Click()
IfVal(Text2.Text)<
0Then
Text3.Text=Val(Text1.Text)/Val(Text2.Text)
Text3.Text="
除数为0,计算无效"
【习题7-2】程序代码
PrivateSubOption1_Click()
Text2.Alignment=0
Text2.Alignment=1
Text2.Alignment=2
PrivateSubText1_Click()
Text1.FontSize=HScroll1.Value
IfOption1.ValueThenText1.Alignment=0
IfOption2.ValueThenText1.Alignment=1
IfOption3.ValueThenText1.Alignment=2
Text2.FontSize=HScroll1.Value
【习题7-3】程序代码
x=Val(InputBox("
请输入一个接近于1的小数"
"
输入"
s1=1
DoWhiles1>
0.000001
s1=s1*x/n
s=s+s1
计算结果="
【习题7-4】程序代码
IfX<
Me.ScaleWidth-XThen
r1=X
r1=Me.ScaleWidth-X
IfY<
Me.ScaleHeight-YThen
r2=Y
r2=Me.ScaleHeight-Y
Ifr1<
r2Thenr=r1Elser=r2
Circle(X,Y),r
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.
Dima(0To9)AsInteger
s=Text1.Text
Fori=1ToLen(s)
c=Val(Mid(s,i,1))
a(c)=a(c)+1
Forj=0To9
Label1.Caption=Label1.Caption&
j&
出现的次数="
a(j)&
Chr(13)&
Chr(10)
2.
DimhouseAsSingle,mAsSingle,wAsSingle,