《过程程序设计》doc版Word文档下载推荐.docx
- 文档编号:8315208
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:5
- 大小:20.79KB
《过程程序设计》doc版Word文档下载推荐.docx
《《过程程序设计》doc版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《过程程序设计》doc版Word文档下载推荐.docx(5页珍藏版)》请在冰点文库上搜索。
编程排列八名运动员100米径赛成绩的名次。
当成绩相同时,运动员的名次相同。
1至8号运动员的成绩分别为:
12.12,11.25,11.13,10.89,14.09,13.56,12.01,11.13。
提示:
本题的解决难点并不在排序,我们可以很轻松地用冒泡排序法或选择排序法进行成绩从小(快)到大(慢)的排列。
问题是排序后的成绩对应于哪一个运动员,恐怕用一维数组是无法记录的。
因此我们可以定义一个二维数组cj(8,2)AsSingle,其中第一列存放运动员的成绩,第二列存放成绩对应的运动员号。
排序针对数组的第一列进行,产生交换时不仅要交换第一列的数组元素,还要交换对应的第二列的数组元素,这样运动员的编号就能跟着成绩“跑”了。
在输出名次时也要注意成绩相同名次相同的问题,在这里名次并非简单地和一维下标一致。
所以应该定义两个变量p和j,p表示名次,j表示有几个人(从1到8)。
当没有重复成绩时,p和j一样(1-8名);
当有重复成绩时,p值就不变,保持前一个人的名次,直到出现不同成绩,p值又与j值一样了。
名次的计算还有其他方法,这里只介绍了这种较为简单的算法。
图7-2成绩的输入图7-1成绩的输出实验步骤:
1.按照图7-1进行界面设计,运动员成绩在列表框1的List属性中输入,如图7-2所示,排名结果在列表框2中输出。
2.完善程序:
OptionExplicitPrivateSubCommand1_Click()Dimcj(8,2)AsSingleDimiAsInteger,kAsIntegerDimproAsStringList2.ClearFori=1To8cj(i,1)=List1.从列表框中取出运动员的成绩cj(i,2)=iNextiCallSort(cj)CallOutPut(cj)EndSubPrivateSubSort(cj()AsSingle)DimtempAsSingle,iAsInteger,jAsInteger填入一段排序程序代码。
注意交换运动员____________________成绩的同时,也要交换运动员的号码。
EndSubPrivateSubOutPut(cj()AsSingle)DimjAsInteger,pAsIntegerp=1List2.AddItem“第1名:
“&
cj(1,2)&
“号成绩:
cj(1,1)Forj=2To8IfThenList2.AddItem“第“&
p&
“名:
cj(j,2)&
cj(j,1)NextjEndSubPrivateSubcmdExit_Click()EndEndSub3.保存文件,调试运行。
实验7.3删除字符串实验任务:
编一子过程DeleStr(s1,s2),将字符串s1中出现的s2子字符串删去,结果还是存放在s1中。
例如:
s1=“12345678AAABBDFGl2345“,s2=“234“,结果:
s1=“15678AAABBDFGl5“提示:
1.在s1字符串找s2的子字符串,可利用InStr()函数,要考虑到s1中可能存在多个或不存在s2字符串,用DoWhileInstr(s1,s2)>
0循环结构来实现。
2.若在s1中找到s2字符串,则通过Left()、Mid()函数的调用实现删除s1中存在的s2字符串,然后再返回判断现在的s1内是否还包含s2。
实验7.4逆序输出实验任务:
编程将任意一个四位正整数逆序输出出来。
如输入1234,输出为4321。
要求编写过程Judge(参数自定)判断输入是否为四位的正整数,如果不是要求重新输入;
过程Rever实现逆序组合。
该题可以采用两种解决方法。
方法一、将正整数按位拆成单个数字后逆序组合。
如四位正整数x的千位数a为:
x\1000,百位数b为:
x\100-a*10,以此类推获得十位数c和个位数d。
那么逆序数为:
图7-3逆序数d*1000+c*100+b*10+a。
方法二、可以将正整数当成字符串处理,用mid函数将字符串分解后重新组合即可。
实验步骤:
1.在窗体上放置两个Label控件、两个TextBox控件和两个CommandButton控件,如图7-3所示。
2.属性设置控件名称属性名称属性值标签框1NameLblInputCaption请输入四位正整数标签框2NameLblReverCaption逆序数为文本框1NameTxtInputText空文本框2NameTxtReverText空命令按钮1NameCmdReverCaption逆序转换命令按钮2NameCmdExitCaption退出3.完善程序PrivateSubcmdExit_Click()EndEndSubPrivateSubcmdRever_Click()方法二DimyAsString,sAsStringDimflagAsIntegers=txtInput.TextCallJudge(s,flag)Ifflag=1ThenCallRever(s,y)txtRever.Text=yElseMsgBox(“数据错误,请重新输入!
“)txtInput.Text=““txtInput.SetFocusEndIfEndSubPrivateSubJudge(sAsString,flagAsInteger)DimiAsInteger_____________Fori=1To4IfMid(s,i,1)>
“9“OrMid(s,i,1)b(q),则c(r)=b(q);
r=r+1;
q=q+1②a(p)b(q)Thenc(r)=b(q)r=r+1q=q+1ElseIfa(p)1Thenx=x/gcdvalue约分y=y/gcdvalueEndIfEndSubPrivateSubCommand1_Click()lowtermnum,den命令格式调用Sub(约分)过程Text3.Text=CStr(den)Text4.Text=CStr(num)EndSubPrivateSubCommand2_Click()填写一段代码,将四个文本框清空,Text1聚焦EndSubPrivateSubCommand3_Click()UnloadMeEndSubPrivateSubText1_Change()den=Val(Text1.Text)分子赋给共用变量denEndSubPrivateSubText2_Change()num=Val(Text2.Text)分母赋给共用变量numEndSub3.保存文件,调试运行思考:
如果约分后是假分数,如何将结果转换为代分数?
试一试。
实验7.10判断素数实验任务:
编写函数IsPrime(aAsInteger)AsBoolean,功能为对给定的整型参数进行素数判断。
要求在Command1_Click()事件过程中,随机产生10个3位正整数,利用IsPrime函数对这10个数进行验证,并输出如下类似结果:
“101是素数”或“110不是素数”。
习题7习题7.1选择题1.在过程定义中用()表示形参的传值。
(A)Var(B)ByDef(C)ByVal(D)Value2.若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便地调用Sort子过程,应该将过程放在()中。
A.窗体模块B.标准模块C.类模块D.工程3.在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用()关键字在过程中定义局部变量。
A.DimB.PrivateC.PublicD.Static4.设有如下说明:
PublicSubFl(n%)…n=3*n+4…EndSubPrivateSubCommand1_Click()Dimn%,m%n=3m=4调用F1语句…EndSub则在Command1_Click事件中有效的调用语句是()。
(A)F1n+m(B)F1m(C)F15(D)F1m+55.下面子过程语句说明合法的是()。
(A)Subfl(ByValn%())(B)Subfl(n%)AsInteger(C)Functionfl%(fl%)(D)Functionfl(ByValn%)6.要想从子过程调用后返回两个结果,下面子过程语句说明合法的是()。
(A)Subf2(ByValn%,ByValm%)(B)Subfl(n%,ByValm%)(C)Subf1(n%,m%)(D)Subfl(ByValn%,m%)7.下面过程运行后显示的结果是()。
PublicSubFl(n%,ByValm%)PrivateSubCommand1_Click()n=nMod10Dimx%,y%m=m\10x=12:
y=34EndSubCallFl(x,y)Printx,yEndSub(A)234(B)1234(C)23(D)1238.如下程序,运行的结果是()。
PrivateSubCommand1_Click()Printpl(3,7)EndSubPublicFunctionpl!
(x!
,n%)Ifn=0Thenp1=1ElseIfnMod2=1Thenp1=x*p1(x,n\2)Elsep1=p1(x,n\2)\xEndIfEndIfEndFunction(A)18(B)7(C)14(D)279.如下程序,运行的结果是()。
Dima%,b%,c%PubllicSubp1(x%,y%)Dimc%X=2*x:
y=y+2:
C=x+yEndSubPublicSubp2(x%,ByValy%)Dimc%x=2*x:
y=y+2:
C=x+yEndSubPrivateSubCommand1_Click()a=2:
b=4:
c=6Callp1(a,b)Print“a=”;
a;
“b=”;
b;
“C=”;
cCallp2(a,b)Print“a=”;
“c=”;
cEndSub(A)a=2b=4c=6(B)a=4b=6c=10a=4b=6C=10a=8b=8c=16(C)a=4b=6c=6(D)a=4b=6c=14a=8b=6c=6a=8b=8c=610.如下程序,运行的结果是()。
PublicSubProc(a%())Statici%DOa(i)=a(i)+a(i十1)i=i+1LoopWhilei“8“ThenChar=Char&
Mid(St,I,1)ElseJ=J+1ReDimPreserveData(J)Data(J)=CharChar=““EndIfNextICallConver(Data,Char)PrintCharEndSub
(2)OptionExplicitPrivateSubCommand1_Click()DimnAsInteger,iAsIntegern=2Fori=9To1Step-1Callsub2(i,n)Printi,nNextiEndSubPrivateSubsub2(xAsInteger,yAsInteger)StaticnAsIntegerDimiAsIntegerFori=3To1Step-1n=n+xx=x-1Nextiy=y+nEndSub(3)OptionExplicitPrivateSubCommand1_Click()DimaAsIntegera=2CallSub1(a)EndSubPrivateSubSub1(xAsInteger)x=x*2+1IfxOptionExplicitOptionBase1PrivateSubForm_Click()Dima(5)AsInteger,iAsInteger,jAsIntegerFori=1To5a(i)=2*i-1NextiPrintForj=1Toi-2Callsub1(a(j),j)PrintjNextjEndSubPublicSubsub1(xAsInteger,pAsIn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 过程程序设计 过程 程序设计 doc