上机编程练习题选解Word格式文档下载.docx
《上机编程练习题选解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《上机编程练习题选解Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
PrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
Text1.Tag=Text1.Text
PrivateSubCommand1_Click()
Text1.Text=UCase(Text1.Tag)
PrivateSubCommand2_Click()
Text1.Text=LCase(Text1.Tag)
PrivateSubCommand3_Click()
Text1.Text=Text1.Tag
3-9参考代码:
ConstpiAsSingle=3.1415926
DimrAsInteger
Label1.Caption="
用滚动条获取不同半径的圆周长和面积"
Label2.Caption="
圆周长"
Label3.Caption="
圆面积"
Label4.Caption="
半径"
Label5.Caption=0
Label6.Caption=100
:
Text1.Locked=True
Text2.Text="
Text2.Locked=True
Text3.Text="
Text3.Locked=True
HScroll1.Min=0:
HScroll1.Max=100
PrivateSubHScroll1_Change()
r=HScroll1.Value:
Text3.Text=r
PrivateSubHScroll1_Scroll()
Text1.Text=2*pi*r:
Text2.Text=pi*r*r
4-6参考代码:
Label1.Caption=0
Label1.BorderStyle=1
Label1.FontName="
黑体"
Label1.FontSize=60
Timer1.Interval=1000
PrivateSubTimer1_Timer()
Label1.Caption=Label1.Caption+1
4-7参考代码:
DimCheCAsInteger
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfChr(KeyAscii)="
("
Then
CheC=CheC+1
ElseIfChr(KeyAscii)="
)"
CheC=CheC-1
EndIf
SelectCaseCheC
CaseIs=0
左右括号配对"
CaseIs<
0
右括号多于左括号"
-CheC&
个"
CaseIs>
左括号多于右括号"
EndSelect
4-8建立应用程序用户界面如图附C-1所示,窗体上有一个框架,两个方本框(分别用于输入年号和月份),三个标签和一个命令按钮。
图附C-1判断闰年
参考代码:
DimyAsInteger,mAsInteger,daysAsInteger
DimjiAsString
DimLeapYearAsBoolean
y=Val(Text1.Text)
m=Val(Text2.Text)
If(yMod4=0AndyMod100<
>
0)Or(yMod400=0)Then
LeapYear=True
Else
LeapYear=False
SelectCasem
Case3To5
ji="
春季(Spring)"
Case6To8
复季(Summer)"
Case9To11
秋季(Autumn)"
Case12,1,2
冬季(Winter)"
Case1,3,5,7,8,10,12
days=31
Case4,6,9,11
days=30
Case2
IfLeapYearThen
days=29
days=28
Label3.Caption=Str(y)&
年"
IIf(LeapYear,"
是"
"
不是"
)&
闰年"
Str(m)&
月有"
Str(days)&
天,在"
ji
Text1.SetFocus
PrivateSubText1_GotFocus()
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
5-1参考代码:
DimsAsSingle,iAsInteger
Show
Fori=1To100
s=s+1/(1+4*i)
Next
Prints
5-2参考代码:
DimpAsInteger,nAsInteger
Forn=100To999
a=Int(n/100)
b=Int((n-a*100)/10)
c=n-a*100-b*10
p=a^3+b^3+c^3
Ifp=nThenPrintp
5-5参考代码如下:
显示"
List1.Height=1770
List1.Width=1300
List1.FontName="
List1.FontSize=14
List1.AddItem"
表项1"
表项2"
表项3"
表项4"
表项5"
注:
列表框的MultiSelect属性在程序运行时是只读的,只能设计时在属性窗口中设置。
DimiAsInteger
Fori=0ToList1.ListCount-1
IfList1.Selected(i)Then
PrintList1.List(i)
5-6参考代码:
DimsAsString,yAsString
s=Trim(Text1)
y="
Fork=1ToLen(s)
x=Mid(s,k,1)
Ifx>
="
A"
Andx<
Z"
Orx>
a"
z"
y=y+x
Text2.Text=y
5-7参考代码:
DimxAsSingle,aAsSingle,tAsSingle
a=Val(InputBox("
请输入一个正数"
))
x=a
Do
t=x
x=(x+a/x)/2
LoopUntilAbs(x-t)<
0.00001
PrintFormat(x,"
0.00000"
)
5-8参考代码:
Print
Forn=1To5
PrintTab(2*n);
Form=nTo10-n
PrintSpc
(1);
*"
Nextm
PrintSpc(4);
Form=1To2*n-1
Nextn
6-3在窗体上建立两个列表框List1(处理前数据)和List2(处理后数据),以及标签Label1。
程序代码如下:
Dima(100)AsInteger,b(100)AsInteger
Randomize
n=100
Fori=1Ton'
输入数组a的n个元素
x=Int(20*Rnd)
List1.AddItemx
a(i)=x
Nexti
k=0
删除零元素
Ifa(i)<
0Then
k=k+1:
b(k)=a(i):
List2.AddItemb(k)
Label1.Caption="
数组中零元素个数:
+Str(n-k)
6-4参考代码:
Frame1.Caption=Space
(2)+"
数据"
+Space(3)+"
出现次数"
Randomize
Dims(40),g(40)
n=40
Fork=1To1000
x=Int(11+40*Rnd)
g(x-10)=g(x-10)+1'
统计各数出现的次数
Fork=1Ton
s(k)=k+10'
数组s
(1)s(40)存放11~50各数
Fork=1Ton-1'
对数组g(n)进行选择法排序
t=k'
保存较大数的位置
Forj=k+1Ton
Ifg(t)<
g(j)Then
t=j
m=g(t):
g(t)=g(k):
g(k)=m
m=s(t):
s(t)=s(k):
s(k)=m
t=Space
(2)&
s(k)&
Space(5)&
g(k)
List1.AddItemt
Next
6-5在窗体上建立4行3列共12个元素的文本框控件数组Text1(0)~Text1(11),参考代码:
Dimt(12)AsString
Fork=1To12
t(k)="
Empty"
'
初始安排12个位置均为"
Forh=65To74'
代表"
至"
J"
,每次随机安排一个字母
DoWhileTrue'
随机查找一个空位
p=Int(1+12*Rnd)'
产生1~12随机数
Ift(p)="
t(p)=Chr(h)
ExitDo
Loop
Text1(k-1).Text=t(k)'
显示座位分配情况
6-6参考代码:
PrivateSubForm_Activate()
Dims(9,9)AsInteger
Forn=0To9
Form=0To9
Ifn=mOrn=10-mThen
s(n,m)=1
s(n,m)=0
Picture1.PrintTab(1+m*3);
s(n,m);
6-7在窗体上添加两个图片框Picture1~Picture2(分别显示转置前、后的矩阵)和两个命令按钮Command1~Command2。
参考代码如下:
Dima(6,4)AsInteger,b(4,6)AsInteger
PrivateSubCommand1_Click()‘“重置”
Forn=1To6
Form=1To4
x=Int(Rnd*90)+10
a(n,m)=x
Picture1.Cls
Picture2.Cls
Picture1.CurrentX=80
Picture1.Printa(n,m);
Picture1.Print
PrivateSubCommand2_Click()‘“转置”
b(m,n)=a(n,m)
Picture2.CurrentX=80
Forn=1To4
Form=1To6
Picture2.Printb(n,m);
Picture2.Print
重置"
转置"
Picture1.BorderStyle=1
Picture2.BorderStyle=1
6-8定义二维数组a(1,1),a(0,0)表示两个正面,a(1,1)表示两个反面,a(0,1)和a(1,0)表示一反一正和一正一反。
在窗体添加一个命令按钮Command1。
Dima(1,1)AsInteger
DimnAsInteger,n1AsInteger,n2AsInteger
n=Val(InputBox("
n="
请输入投币次数"
投币次数:
n
RandomizeTime
Fori=1Ton
n1=Int(Rnd*2)
n2=Int(Rnd*2)
a(n1,n2)=a(n1,n2)+1
两个正面的次数为:
a(0,0)
两个反面的次数为:
a(1,1)
一正一反次数为:
a(0,1)+a(1,0)
输入次数"
7-3参考代码:
DimsAsString
s=Trim(Text1.Text)
List1.Clear
n=Getword(s)
Text2.Text=n
PublicFunctionGetword(sAsString)AsInteger
n=0
DoWhilen<
=Len(s)
p=InStr(s,Space
(1))
n=n+1
Ifp=0Then
List1.AddItems
s="
List1.AddItemLeft(s,p-1)
s=Mid(s,p+1)
Getword=n
EndFunction
7-4参考代码如下:
PublicFunctionPwoer(xAsSingle,nAsInteger)AsDouble
Ifn=0Then
Pwoer=1
Pwoer=x*Pwoer(x,n-1)
DimxAsSingle,nAsInteger
x=Val(InputBox("
输入一个实数:
输入一个正整数:
PrintPwoer(x,n)
7-6把两个窗体上的命令按钮分别定义为控件数组。
窗体Form1的代码:
随机数"
最大值"
Command1(0).Caption="
生成随机数"
Command1
(1).Caption="
求最大数"
Command1
(2).Caption="
打开排序窗口"
Command1(3).Caption="
结束"
PrivateSubCommand1_Click(IndexAsInteger)
SelectCaseIndex
Case0‘生成随机数
Fori=0To9
x=Int(Rnd*89+0.5)+11
yes=0
Forj=0Toi-1
Ifx=a(j)Thenyes=1:
ExitFor
LoopWhileyes=1
Text1.Text=Text1.Text&
x&
"
Text1.Text=Left(Text1.Text,Len(Text1)-1)
Case1
Text2.Text=Max(a())‘求最大数
Case2‘打开排序窗体
Form1.Hide
Form2.Show
Case3‘结束
UnloadForm1
UnloadForm2
窗体Form2的代码:
Case0‘排序
CallSort(a())
a(i)&
Text1.Text=Left(Text1.Text,Len(Text1.Text)-1)
Case1‘返回
Form2.Hide
Form1.Show
结果"
排序"
返回"
T