第八章参考答案一、程序阅读题1.1.F.11.T.2.A3、254.A=___10____B=____100______5.1.T.10.F.6._____55______。7.___10______200____。8、409、410、计算机等级是及格11、612、23434513、11.001114、3691215182115、按记录号的降序逐条显示表中10条记录16、WABCABC连续显示5行二、程序填空题1.(xmax)(xmin)2.(Y=Y+X)3.(RETURNT)4.(noteof())(skip)5(store)(docase)(入学成绩=400and入学成绩=500)6.(skip)(入校总分fs)7.(姓名=xm)8.(loop)三、编程题1、用循环结构计算1到1000之和。S=0Fori=1to1000S=s+iendfor?s2、输入20个数,统计其中正数、负数、零的个数。Stroe0tozs,fs,lingFori=1to20Input“请输入一个数:”toxDocaseCasex0Zs=zs+1Casex0Fs=fs+1Casex=0Ling=ling+1EndcaseEndfor?”正数的个数:”,zs,”负数的个数:”,fs,”零的个数:”,ling3、输入长方体的长、宽和高,求长方体的体积;Input“请输入长方体的长:”tocInput“请输入长方体的宽:”tokInput“请输入长方体的高:”togM=c*k*g?“长方体的体积为:”,m4、某航空公司规定,如果订票数超过20张,则票价优惠15%;如果超过10张,则票价优惠10%,编写程序,输入票价及订票数后,显示出所需金额。Input“请输入票价:”topjInput“请输入票数:”topsDocaseCaseps=20Je=pj*ps*0.85Caseps=10Je=pj*ps*0.9OrthwiseJe=pj*psEndcase?”所需金额为:”,je5、编写程序计算1到100所有5的倍数之和。S=0Fori=1to100Ifmod(I,5)=0S=s+iEndifEndfor?s6、编程序求两个数的最大公约数。(方法是用两个数中较小的去除较大的,然后将除数作为下一次除的被除数,余数作为下一次除的除数,反复进行这样的操作,直到余数为零时为止。则最后一次除的除数,即为所给两个数的最大公约数。)SETTALKOFFINPUT″请输入A:″TOAINPUT″请输入B:″TOBIFA〈BT=AA=BB=TENDIFDOWHILEB〈〉0T=MOD(A,B)A=BB=TENDDO?ASETTALKONRETURN7、鸡兔同笼问题。鸡兔同笼,若已经知道鸡兔总头数为h(head),总脚数为f(feet),求鸡兔各有多少只?(假设h=40,f=100)解题过程:设鸡为a只,兔为b只,已知鸡兔的总头数为h=40,则a+b=h①又知鸡有两只脚,兔有4只脚,由题目知道f=100,则2*a+4*b=f②由①、②可得:a=(4*h-f)/2③b=(f-2*h)/2④程序代码如下:settalkoffclearh=40f=100a=(4*h-f)/2b=(f-2*h)/2?鸡为,a,只?兔为,b,只settalkonreturn8、由键盘输入3个不同的数,求出最小的数。程序代码如下:settalkoffclearinput输入数atoainput输入数btobinput输入数ctocifabm=aelsem=bendififcmm=cendif?最小的数为,msettalkonreturn9、求1*2*3*…*n的积小于500的最大的n值。程序代码如下:settalkoffclearn=0s=1dowhiles500n=n+1s=s*nenddo?n-1settalkonreturn10、*********利用双循环打印输出左面的图形。****************CLEARFORK=5TO1STEP-1?SPACE(5-K)FORL=1TO2*K-1??*ENDFORENDFORRETURN11、已知ns131211,求S刚好大于8时S与N的值。CLEARN=1S=0DOWHILES=8S=S+1/NN=N+1ENDDO?“N=”,N-1?“S=”,S12、判断3到20的自然数是否为素数。SETTALKOFFCLEARFORX=3TO20DOPDSSENDFORRETURNPROCEDUREPDSSFORI=2TOX-1IFX/I=INT(X/I)?X,“不是素数”RETURNENDIFENDFOR?X,“是素数”RETURN13、编写一密码校验程序(假设密码为ABC)。SETTALKOFFCLEARACCEPT“请输入您的密码:”TOAAAIFAAA=”ABC”CLEAR?”欢迎使用本系统!”ELSE?”密码错误!”WAITQUITENDIFSETTALKON14、假设收入(P)与税率(R)的关系如下表,编程求税金。R=0.05800≤P<2000R=0.082000≤P<5000R=0.1P≥5000SETTALKOFFCLEARINPUT“请输入收入:”TOPDOCASECASEP800R=0CASEP2000R=0.05CASEP5000R=0.08OTHERWISER=0.1ENDCASETAX=P*R?”税金为:”,TAXSETTALKONRETURN15、计算—个函数f(x)。0(x-1或x=5)f(x)=2x2-x(-1=x1)x(1=x5)的值。SETTALKOFFINPUT“请输入x值:”TOxDOCASECASEx-lANDX=5f=0CASEX=-1ANDX1f=2*x*x-xCASEX=1ANDx5f=xENDCASE?‘f(X)=’,fSETTALKONRETURN16、编程显示“学生管理”数据库的“学生”表中除“李宁”以外的所有记录。SETTALKOFFCLEAROPENDATABASESTUDENTUSESTUDDOWHILE.NOT.EOF()IF姓名=”李宁”SKIPLOOPENDIFDISPLAYSKIPENDDOCLOSEALLSETTALKONRETURN17、用过程文件实现对“学生管理”数据库的“学生”表进行查询、删除和插入操作。主程序如下:*PA12.PRG&&主程序文件名SETTALKOFFCLEAROPENDATABASE学生管理SETPROCEDURETOPROCE&&打开过程文USE学生INDEXON姓名TOXMDOWHILE.T.&&显示菜单CLEAR@2,20SAY“学籍管理系统”@4,20SAY“A:按姓名查询”@6,20SAY“B:按记录号删除”@8,20SAY“C:追加记录”@10,20SAY“D:退出”WAIT“请选择A,B,C,D”TOXZDOCASECASEXZ=”A”DOPROCE1CASEXZ=”B”DOPROCE2CASEXZ=”C”DOPROCE3CASEXZ=”D”EXITENDCASEENDDO过程文件如下:*PROCE.PRG&&过程文件名PROCEDUREPROCE1&&查询过程CLEARACCEPT”请输入姓名:”TONAMESEEKNAMEIFFOUND()DISPLAYELSE?”查无此人”ENDIFWAITRETURNPROCEDUREPROCE2&&删除记录过程CLEARINPUT”请输入要删除的记录号:”TONGONDELETEWAIT”物理删除吗Y/N:”TOFLAGIFFLAG=”Y”.OR.”y”PACKENDIFRETURNPROCEDUREPROCE3&&插入新的记录过程CLEARAPPENDRETURN18、在数据表文件XS.DBF中查询姓名为刘春林的记录,若其总分大于等于250分,则显示他的学号、姓名、专业和总分。SETTALKOFFUSEXSINDEXON姓名TOXMSEEK刘春林IFFOUND()IF总分=250?学号:,学号?姓名:,姓名?专业:,专业?总分:,总分ELSE?刘春林的总分小于250分!ENDIFELSE?库中没有刘春林的记录!ENDIFUSERETURN19、运行XY.PRG程序后,将在屏幕上显示如下乘法表:1)12)243)3694)4812165)5101520256)612182430367)71421283542498)8162432404856649)91827364554637281***计算乘法表XY.PRG***SETTALKOFFCLEARFORJ=1TO9?STR(J,2)+‘)’FORK=1TOJ??STR(J*K,6)ENDFOR?ENDFORRETURN20、编写程序实现对表STUDENT(学号C(6),姓名C(8),性别C(2),出生日期D,是否党员L,专业C(12),籍贯C(10)中的记录按姓名进行顺序查询。要求在程序每次运行时只能从键盘上输入一位待查学生姓名,若查找到则显示该生“学号”、“姓名”和“专业”字段信息,若没有找到则在屏幕上显示“查无此人!”。SettalkoffUsestudentAccept“请输入要查找的学生姓名:”toxmLocatefor姓名=xmIffound()?“学号”,学号,“姓名”,姓名,“专业”,专业Else?“查无此人!”EndifUseSettalkonreturn第九章参考答案一、选择题:1.C2.A3.D4.A5.C6.D7.A8.C9.B10.C二、填空题:1.Text2的Value属性设置为0;“开始”按钮的Click事件代码为:ForI=1to500IfMod(I,Thisform.text1.value)=0Thisfom.Edit1.Value=Thisform.Edit1+str(I,5)+chr(13)Thisform.Text2.Value=Thisform.Text2.Value+iEndifEndfor“清除”按钮的事件代码为:Thisform.Text1.Value=0Thisform.Text2.Value=0Thisform.Edit1.Value=””2.nn=A+str(100,3)kk=12nn=nn+substr(kk,2,1)use&nnaa=alltrim(thisform.text1.value)bb=thisform.check1.valuebrowsefor班级=aaand性别=bb3.1)表单Form1的Caption属性为:查询成绩2)“列表框”List1的Click事件代码:SETFILTERTOTHISFORM.LIST1.VALUE=课程.课程名3)“表格”GRID1的显示栏目数属性LOUMNCOUNT=34)“表格”GRID1中学号数据源为:CONTROLSOURCE=学生.学号5)命令按钮COMMAND1(“退出”按钮)的CLICK事件代码:THISFORM.RELEASE4.1)文本框Text1的Click事件代码为:This.Value=time()2)文本框Text1的Rightclick事件代码为:Thisform.text1.value=date()3)清除命令按钮的代码为:thisform.text1.value=””4)退出按钮的代码为:thisform.release三、程序题:1.答案:1)建立一个表单,表单的CAPTION属性设为“编程题1”2)标签、文本框、四个命令按钮(caption属性)正确建立和设置3)建立自定义ABC(可以为其它名)或在表单的load事件中定义PUBLICABC4)“大写”按钮的Click事件:thisform.text1.value=upper(thisform.abc)或thisform.text1.value=upper(abc)(注:按公共变量设置)5)“小写”按钮的Click事件:thisform.text1.value=lower(thisform.abc