VFP程序改错.doc_第1页
VFP程序改错.doc_第2页
VFP程序改错.doc_第3页
VFP程序改错.doc_第4页
VFP程序改错.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序改错*题目:表XSDA.DBF结构为:学号(C,6),姓名(C,6),性别(C,2),入学成绩(N,6,2)。本程序复制表XSDA的记录到表XS1中,在表XS1中查找入学成绩550分以上的同学,将其删除并浏览XS1的内容。SET TALK OFFUSE XSDA*FOUND*COPY STRUCTURE TO XSDAUSE XS1*FOUND*LOCATE ALL 入学成绩=550DO WHILE FOUND()DELETE*FOUND* LOOPENDDOPACKBROWUSESET TALK ON答案: 1). COPY TO XS1 2). LOCATE ALL FOR 入学成绩=550 或 LOCATE ALL FOR 5501SELECT (A-1)FILENAME=ALIAS()*FOUND*SUM FIELD TO fnum*FOUND*SUM TO RECNUMCLEAR 6,6 SAY 在+STR(A-1),1)+区中已经打开了: + FILENAME 7,6 SAY 该数据库中的字段数是: + STR(FNUM,1) 8,6 SAY 该数据库中的记录数是: + STR(RECNUM,1)ENDIFCLOSE DATASET TALK ONRETURN答案: 1). SELECT0 2). storefcount()tofnum 或 FNUM=FCOUNT() 3). count to recnum*题目:STUDENT.DBF是一个学生信息文件,包含学号(C 8)、姓名(C 8)、性别(C 2)、政治面目(C 4)、班级(C 5)等字段;其中性别用字符串男或女表示,政治面目用字符串党员、团员或群众表示。程序MODI1.PRG的功能是:显示输出所有政治面目为群众的男生姓名和班级。set talk offclearUSE STUDENTLOCATE FOR 政治面目=群众*FOUND*DO WHILE .not. FOUND()IF 性别=女CONTINUE*FOUND*break ENDIF? 姓名,班级*FOUND*skip ENDDOUSESET TALK ON答案: 1). DOWHILEFOUND() 2). LOOP 3). CONTINUE*题目:有结构相同的三个班学生数据库STD1.DBF、STD2.DBF、STD3.DBF。其中学号的前两位是学生所在班级号。一个统计数据库TJ.DBF,其结构包括七个字段:班级C(2)、男、女、党员、团员、群众、少数民族,后六个均为数值型字段N(3,0)。请编写统计程序MODI1.PRG,按班对学生数据进行的性别、政治面目和民族统计,并将统计结果存放到TJ.DBF中。(不得修改学生数据库)set talk offsele 1use std1sele 2use std2sele 3use std3sele 4 use tjzapsele 1*FOUND*banji=学号 count all for 性别=男 to mancount all for 性别=女 to womancount all for 民族汉 to minzucount all for 政治面目=党员 to dangyuancount all for 政治面目=团员 to tuanyuancount all for 政治面目=群众 to quanzhongsele 4appe blan repl 班级 with banji,男 with man,女 with woman,党员 with dangyuan,团员 with tuanyuan,群众 with quanzhong,少数民族 with minzusele 2banji=left(学号,2)count all for 性别=男 to mancount all for 性别=女 to womancount all for 民族汉 to minzucount all for 政治面目=党员 to dangyuancount all for 政治面目=团员 to tuanyuancount all for 政治面目=群众 to quanzhongsele 4appe blan repl 班级 with banji,男 with man,女 with woman,党员 with dangyuan,团员 with tuanyuan,群众 with quanzhong,少数民族 with minzu*FOUND*sele 1 banji=left(学号,2)count all for 性别=男 to mancount all for 性别=女 to womancount all for 民族汉 to minzucount all for 政治面目=党员 to dangyuancount all for 政治面目=团员 to tuanyuancount all for 政治面目=群众 to quanzhongsele 4*FOUND*appe repl 班级 with banji,男 with man,女 with woman,党员 with dangyuan,团员 with tuanyuan,群众 with quanzhong,少数民族 with minzuclose databaseset talk onreturn答案: 1).banji=left(学号,2)或 banji=subs(学号,1,2)或banji=01 2). sele3 或 selec 3). appeblank*题目:分别统计化学系的男、女生总人数并显示出来。USE XSDBSTOR 0 TO RS1,RS2*FOUND*FIND FOR 系别=化学DO WHILE .NOT.EOF()*FOUND* IF 性别男 RS1=RS1+1 ELSE RS2=RS2+1 ENDIF CONTENDDO? 男生人数=,RS1? 女生人数=,RS2USE答案: 1).LOCATEFOR系别=化学 或 LOCATEALLFOR系别=化学或 LOCATEFOR系别=化学 或 LOCATEALLFOR系别=化学 2). IF 性别=男 或 IF 性别女 或 IF 性别#女 或 IF 性别=男 或 IF 性别女 或 IF 性别#女*题目:有如下数据库文件: ZY.DBF:职员号N(3,0),姓名C(6),性别C(2),职务C(10);DD.DBF:订单号N(3,0),客户号N(3,0),职员号N(3,0),签订日期D(8),金额N(6,2)。给定程序MODI1.PRG的功能是:根据客户号查询该客户的有关订单信息,结果按订单金额降序排序,并显示这些定单的总金额。修改并调试该程序,使之正确运行。SET TALK OFFSET SAFETY OFFSELECT 1USE zyINDEX ON 职员号 TO zyiSELECT 2USE ddINDEX ON -金额 TO ddi*FOUND* SET RELATION ON -金额 TO ADO WHILE .T.CLEARKH=202? 请输入客户号: , kh?LOCATE FOR 客户号=kh*FOUND*IF .NOT.EOF()? 没有该客户!ELSE? 订单号+ 职 员+SPACE(5)+签订日期+ 金 额?s=0DO WHILE !EOF()? STR(订单号,3)+SPACE(5)+A-姓名+SPACE(5)+DTOC(签订日期)+ +STR(金额,6,2)*FOUND*s=金额CONTINUEENDDO? 总金额为:+STR(s,8,2)ENDIF?WAIT 继续查询吗(Y/N)? TO pIF !UPPER(p)=YEXITENDIFENDDOCLOSE DATASET SAFETY ONSET TALK ON答案: 1).SETRELATO职员号INTOA 或 SETRELATO职员号INTOzy 2).IFEOF()或IF.NOT.FOUND() 3).s=s+金额 或 s=金额+s 或 STORs+金额TOs 或 STOR金额+sTOs*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则显示:查无此人!。USE XSDB*FOUND*FIND FOR 姓名=徐秋实IF .NOT.FOUND()?查无此人!ELSE*FOUND*?系别,姓名, 计算机=+计算机, 英语=+英语ENDIFUSERETURN答案: 1). LOCATEFOR姓名=徐秋实 或 LOCATEALLFOR姓名=徐秋实 或 LOCATEFOR姓名=徐秋实 或 LOCATEALLFOR姓名=徐秋实2).?系别,姓名,计算机=+STR(计算机),英语=+STR(英语) 或 ?系别,姓名,计算机=,计算机, 英语=,英语 或?系别,姓名,计算机=+STR(计算机,3),英语=+STR(英语,3) 或 ?系别,姓名,计算机=+STR(计算机),英语=+STR(英语) 或 ?系别,姓名,计算机=,计算机, 英语=,英语 或 ?系别,姓名,计算机=+STR(计算机,3),英语=+STR(英语,3)*题目:STUDENT.DBF是一个学生信息文件,其中包含学号(C 8)、姓名(C 8)等字段,而且已按学号建立了索引,索引文件名是STUDENT.IDX;文件SCORE.DBF是成绩文件,其中包含学号(C 8)、课程名(C 20)、成绩(N 5.1)等字段,而且已按课程名建立了索引,索引文件名是SCORE1.IDX。程序MODI1.PRG的功能是:显示输出选修数据结构课程的学生姓名和成绩,每个成绩输出一行,包括学生的姓名和成绩;set talk offclearSELECT 3USE STUDENT INDEX STUDENTSELECT 4USE SCORE INDEX SCORE1SEEK 数据结构*FOUND*DO WHILE !EOF()SELECT STUDENT*FOUND*SEEK 学号? 姓名+:SELECT SCORE? 成绩*FOUND*next 1 &ENDDOCLOSE DATASET TALK ON答案:1).DOWHILE课程名=数据结构2).SEEKSCORE-学号 或 SCORE.学号或 D-学号 或 D.学号3). skip*题目:将200到300之间的所有能被3整除或被5整除的数求和并统计个数。STORE 0 TO S,CI=200DO WHILE I=300*FOUND* IF INT(I/3)=INT(I/5)S=S+I*FOUND* C=C+I ENDIF I=I+1ENDDO?200到300之间的所有能被3整除或被5整除的数之和=+STR(S,6)?200到300之间的所有能被3整除或被5整除的数的个数=+STR(C,6)答案:1).IF INT(I/3)=I/3.OR.INT(I/5)=I/5 或 IF MOD(I,3)=0.OR.MOD(I,5)=0 或 IF INT(I/5)=I/5.OR. INT(I/3)=I/3 或 IF MOD(I,5)=0.OR.MOD(I,3)=0 或 IF INT(I/3)=I/3 OR INT(I/5)=I/5 或 IF MOD(I,3)=0 OR MOD(I,5)=0 或 IF INT(I/5)=I/5 OR INT(I/3)=I/3 或 IF MOD(I,5)=0 OR MOD(I,3)=02). C=1+C 或 C=C+1 或 STORC+1TOC*题目:打开XSDB.DBF数据表, 分别统计男、女生的人数。USE XSDBSTOR 0 TO B,G DO WHILE .NOT.EOF()*FOUND*IF 性别男 B=B+1*FOUND*ENDIFG=G+1 ENDIF SKIPENDDO?男生人数是:+STR(B)?女生人数是:+STR(G)答案: 1). IF 性别=男 或 IF 性别女 或 IF 性别#女 或 IF 性别=男 或 IF 性别女 或 IF 性别#女 2). ELSE*题目:该程序完成口令检验功能。输入三次不正确退出。SET TALK OFF CLEARass1=AbCdEfTT=1DO WHILE TT410,20 SAY 请输入口令:SET CONSOLE OFFACCEPT TO assSET CONSOLE ON*FOUND*IF ass1=ass CLEAR ?欢迎使用本系统!*FOUND* LOOPELSE *FOUND* TT=TT-1 CLEAR ?口令错,按任意键再输入一次! WAIT ENDIFENDDORETURN答案: 1). IF UPPER(ass1)=UPPER(ass) 或 IF UPPER(ass1)=UPPER(ass) 2). EXIT 3).TT=TT+1 或 TT=1+TT*题目:打印由数字组成的图形,要求第一行空10个空格打印5个1,第二行空11个空格打印5个2,图形如下:* 11111* 22222 * 33333* 44444* 55555CLEAFOR I=1 TO 5*FOUND* ?SPAC(9-I) FOR J=1 TO 5*FOUND* ?STR(J,1) ENDFORENDFOR答案:1).?SPAC(9+I) 或 ?SPACE(9+I)2).?STR(I,1)*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。S1=0*FOUND*S2=0FOR I=1 TO 5INPUT 请输入第+STR(I,1)+ 数 TO M*FOUND*IF INT(M/2)=0S1=S1+MELSE S2=S2*M ENDIFENDFOR? 奇数和是,S1或?奇数和是,S1? 偶数积是,S2或?偶数积是,S2答案:1). S2=1 或 STOR 1 TO S22).IF MOD(M,2)0 或 IF MOD(M,2)#0 或 IF INT(M/2)M/2 或 IF INT(M/2)#M/2*题目:现已有两个数据库文件ZG.DBF和DW.DBF。给定程序MODI.PRG的功能是:显示两个数据库文件中职工号一样的相应记录的相关信息。SET TALK OFFSET SAFETY OFFCLEARSELECT 1USE DWSELECT 2USE ZG*FOUND*INDEX ON 职工号 INTO ZGH SELE 1*FOUND*SET RELATION ON 职工号 INTO BLOCATE FOR 职工号=B-职工号DO WHILE FOUND()DISPLAY 职工号,姓名,B-基本工资,单位,性质*FOUND*SKIP ENDDOCLOSE DATABASERETURN案:1). INDEON职工号TOZGH 或 INDETOZGHON职工号2). SETRELATO职工号INTOB 或 SETRELATO职工号INTOZG3). CONT*题目:将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在s所指的字符串中。在此处,要求t1和t2所指字符串的长度相同。例如,当s所指字符串中的内容为:abcdabfab, t1所指子串中的内容为:ab,t2所指子串中的内容为: 99时,结果,在w所指的数组中的内容应为:99cd99f99。set talk offclears=abcdabfabt1=abt2=99p=i=1*FOUND*do while i=len(s)-3if t1=subs(s,i,2)*FOUND*s=stuff(s,i,2,t1)endif*FOUND*skip endd? s=,s答案: 1). dowhilei=len(s)-1 或 dowhilei=len(s) 或 dowhilei职工号 或 JOINWITHZGTOJJFOR职工号=ZG-职工号 或 JOINWITHATOJJFOR职工号=A 2). INDEON职称TOZCHZ 3). COPYTOABCFIEL职称,奖金,实发工资 或 COPYFIEL职称,奖金,实发工资TOABC*题目:已有数据库djks.dbf。包括:考号、姓名、笔试成绩、上机成绩和平均成绩等字段,但各成绩字段为空;另有成绩数据库cj.dbf,包括:考号、考场编号、笔试成绩和上机成绩等字段,考生的考试成绩已录入其中。请编写程序 MODI1.PRG,要求把考生的考试成绩填写到数据库djks.dbf中,然后再计算笔试和上机成绩的平均成绩,填入各记录的平均成绩字段中。最后生成一个与djks.dbf结构完全相同的不及格数据库bjg.dbf,把平均成绩不及格的考生记录移入不及格库。SET TALK OFFSET DELETED OFFCLEARSELE BUSE CJSELE AUSE DJKS*FOUND* INDEX TO 考号 ON DJKS UPDATE ON 考号 FROM B REPLACE 笔试成绩 WITH B-笔试成绩,上机成绩 WITH B-上机成绩 RANDOMGO TOP*FOUND* REPLACE 平均成绩 WITH (笔试成绩+上机成绩)/2 *FOUND* COPY TO BJG FOR 平均成绩=60 LISTUSE BJGLISTCLOSE DATABASESET TALK ON答案: 1).INDEXON考号TODJKS 2). REPLACEALL平均成绩WITH(笔试成绩+上机成绩)/23).COPYTOBJGFOR平均成绩60*题目:本程序计算1!3!9!的乘积。SET TALK OFFM=1*FOUND*S=0DO WHILE M=9I=1P=1*FOUND*DO WHILE M=9P=P*II=I+1ENDDOS=S*P*FOUND*M=M+3ENDDO? 1!3!9!=,SSET TALK ONRETURN答案: 1).S=1 2).DO WHILE I=I 3). M=M*3*题目:将XSDB.DBF表中奖学金超过60元的学生姓名和奖学金显示在屏幕上。USE XSDB*FOUND*IF 奖学金60 DO WHILE .NOT.EOF()*FOUND* ?姓名=+姓名,奖学金=+奖学金 CONTENDDOUSE答案:1). LOCATE FOR奖学金602).?姓名=+姓名,奖学金=+STR(奖学金,4,1) 或 ?姓名=+姓名,奖学金=+STR(奖学金) 或 ?姓名=+姓名,奖学金=+STR(奖学金,4,1) 或 ?姓名=+姓名,奖学金=+STR(奖学金)*题目:计算并在屏幕上显示出九九乘法表,显示格式如下*111*212 224*313 326 339* *919 9872 9981*程序中共有2个错误,请修改下面一条语句的错误,并调试运行。X=1DO WHILE X=9Y=1*FOUND*DO WHILE Y=9?STR(X,1)+STR(Y,1)+=+STR(X*Y,2)+ Y=Y+1ENDDO*FOUND*dispX=X+1ENDDO答案: 1).DO WHILE Y=Y 2).?*题目:809*?=800*?+9*?+1 其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809*?后的结果。set talk offclearA=800+9*FOUND* FOR I=10 TO 100 *FOUND* B=I/A+1 IF B 1000 .AND. B10000 .AND. 8*I=100? ?代表的两位数是,I? 809*?后的结果是:,809*IENDIF*FOUND*ENDD SET TALK ON答案: 1). FORI=10TO99 2). B=I*A+1 3). ENDF*题目:有计算机等级考试成绩数据库cj.dbf,包括考号、笔试成绩和上机成绩等字段,其中考号的前两位是单位编码;还有统计数据库tj.dbf,包括单位编码、笔试平均分、上机平均分、笔试最高分、上机最高分等字段。请编写程序 MODI1.PRG,其功能是:按单位进行各项统计,结果存于统计数据库tj.dbf的相应字段中。 SET TALK OFFSET SAFETY OFFCLOSE DATABASECLEARSELE 2USE TJZAPSELE 1USE CJSORT ON 考号 TO CJ1USE CJ1DO WHILE .NOT. EOF()STORE 0 TO BS1,SJ1,BSMAX,SJMAXDWCODE=SUBSTR(考号,1,2)N1=0BSMAX=笔试成绩SJMAX=上机成绩DO WHILE 考号=DWCODE*FOUND*IF 上机成绩BSMAXBSMAX=笔试成绩ENDIFBS1=BS1+笔试成绩SJ1=SJ1+上机成绩N1=N1+1*FOUND*go 1 ENDDOSELE 2*FOUND*APPEND REPLACE 单位编码 WITH DWCODE,笔试平均分 WITH BS1/N1,上机平均分 WITH SJ1/N1,笔试最高分 WITH BSMAX, 上机最高分 WITH SJMAXSELE 1ENDDOSELE 2LISTCLOSE DATABASESET TALK ONSET SAFETY ON答案: 1). IF上机成绩SJMAX 2). SKIP 3). APPENDBLANK*题目:程序输入两个任意整数,求最小公倍数,并显示输出。SET TALK OFFINPUT X= TO XINPUT Y= TO YMAX=XIF YX MAX=Y*FOUND*ENDFORA=MAXDO WHILE A=1 ?SUBS(S,L,1)*FOUND* L=L+1ENDD答案: 1).L=LEN(S) 或 STOR LEN(S) TO L 2). L=L-1 或 STORL-1TOL*题目:键盘输入X值时,求其相应的Y值* -1 (X0)SET TALK OFF*FOUND*ACCEPT 请输入一个数: TO X*FOUND*DO WHILECASE X0Y=1ENDCASE? YSET TALK OFF答案: 1). INPUT 2). DO CASE 3). OTHERWISE 或 case x0*题目:分别统计字符串中大写字母和小写字母的个数。例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应输出结果:upper = 6, lower = 8。set talk offclears=AAaaBBb123CCccccdstor 0 to l,u*FOUND*for i=0 to len(s)-1 if isup(subs(s,i,1)u=u+1endiif islow( subs(s,i,1)*FOUND*i=i+1 endi*FOUND*enddo ? upper=,u,lower=,lSET TALK ON答案: 1). fori=1tolen(s) 2). l=l+1 3). endfor*题目:有如下数据库文件: ZY.DBF:职员号N(3,0),姓名C(6),性别C(2),职务C(10);KH.DBF:客户号N(3,0),客户名C(30),地址C(30),电话C(13); DD.DBF:订单号N(3,0),客户号N(3,0),职员号N(3,0),签订日期D(8),金额N(6,2)。给定程序MODI1.PRG的功能是:根据职员姓名查询该职员签订的有关订单信息。修改并调试该程序,使之正确运行。SET TALK OFFSET SAFETY OFFSELECT 1USE zySELECT 2USE khINDEX ON 客户号 TO khiSELECT 3USE ddSET RELATION TO 客户号 INTO BINDEX ON 职员号 TO ddiDO WHILE .T.CLEARXM=王武?请输入职员姓名: ,XMSELECT 1LOCATE FOR 姓名=xmIF EOF()? 没有该职员!ELSE? 订单号+ 客户名+SPACE(25)+ 签订日期+ 金 额?*FOUND*n=1? 职员号:,职员号zyh=职员号SELECT 3SEEK zyh*FOUND* DO WHILE !EOF()? STR(订单号,3)+SPACE(5)+KH-客户名+ +DTOC(签订日期)+ +STR(金额,6,2)n=n+1*FOUND*CONTENDDO? 共+STR(n,2)+张订单ENDIF?WAIT 继续查询吗(Y/N)? TO pIF !UPPER(p)=YEXITENDIFENDDOCLOSE DATASET SAFETY ONSET TALK ON答案: 1). N=0 或 N=1-1 或 STORE 0 TO N 2). DOWHIL.NOT.EOF().AND.职员号=zyh 或 DOWHIL职员号=zyh.AND.NOT.EOF() 或 DOWHIL职员号=zyh 3). SKIP 或 SKIP 1 或 SKIP +1*题目:识别用户密码,保护系统不被非授权用户使用。该程序给用户三次输入密码的机会(要求输入的密码不显示在屏幕上),超过三次,系统退出。用户密码保存在P1DB数据库中set talk offset exact oncleark=0do while k=1n=n-1enddoendifk=k+1enddoif k=3 15,10 say 对不起,您不能使用本系统n=80000 do while n=1n=n-1enddoendifset talk on return答案: 1). setconsoleoff 2). setconsoleon 3). if.not.eof() 或 if!eof()*题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? set talk of

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论