vfp程序改错

更新时间:2024-04-01 13:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Visual Foxpro程序改错

〖第1题〗(练习题所在文件夹:163)

*题目:该程序完成口令检验功能。输入三次不正确退出。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF CLEAR

ass1=\TT=1

DO WHILE TT<4

@10,20 SAY \请输入口令:\SET CONSOLE OFF ACCEPT TO ass SET CONSOLE ON

**********FOUND********** IF ass1=ass CLEAR

?\欢迎使用本系统!\

**********FOUND********** LOOP ELSE

**********FOUND********** TT=TT-1 CLEAR

?\口令错,按任意键再输入一次!\ WAIT\ENDIF ENDDO RETURN 答案:

1). IF UPPER(ass1)==UPPER(ass) 或 IF UPPER(ass1)==UPPER(ass) 2). EXIT

3). TT=TT+1 或 TT=1+TT

〖第4题〗(练习题所在文件夹:500)

*题目:ZHG.DBF是一个职工信息文件,其中包含编号(C 5)、姓名 * (C 8)、性别(C 2)、政治面貌(C 4)、出生日期(D 8)等字 * 段。性别用字符串\男\或\女\表示,政治面貌用字符串\* 党员\、\团员\或\群众\表示。此文件已按政治面貌建立 * 了索引,索引文件名是ZHG_ZHZH.IDX。

* 程序功能是:显示输出所有政治面貌为\群众\的女职工的 * 姓名和出生日期(每行输出一个职工的信息)在屏幕上 *注意:不可以增加或删除程序行,也不可以更改程序的结构。

set talk off clear

***********FOUND********** USE ZHG

SEEK \群众\

***********FOUND********** DO WHILE !EOF() IF 性别=\女\

DISP 姓名,出生日期

***********FOUND********** ENDD SKIP ENDDO USE

SET TALK ON 答案:

1). USE ZHG INDEX ZHG_ZHZH

2). DO WHILE政治面貌=\群众\或 DOWHILE政治面貌='群众' 或 DOWHILE政治面貌=[群众]

3). ENDIF

〖第5题〗(练习题所在文件夹:105)

*题目:在RSH.dbf 中,查找职工赵红的工资,如果工资小于200元, * 则增加100元;如果工资大于等于200元且小于500元时,则增 * 加50元;否则增加20元。最后显示赵红的姓名和工资。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 CLEAR USE RSH

***********FOUND********** LOCATE FOR 姓名 =赵红 DO CASE

CASE 工资< 200

REPLACE 工资 WITH 工资+ 100 CASE 工资< 500

REPLACE 工资 WITH 工资+ 50 OTHERWISE

REPLACE 工资 WITH 工资+ 20 ENDCASE

***********FOUND********** LIST 姓名,工资 USE 答案:

1). LOCATE FOR 姓名=\赵红\或 LOCA FOR 姓名='赵红' 或 LOCA FOR 姓名=\赵红\或 LOCATE FOR 姓名=[赵红] 或 LOCA FOR 姓名=[赵红] 或 LOCATE FOR 姓名='赵红'

2). DISP 姓名,工资 或 ?姓名,工资 或 DISPLAY 姓名,工资

〖第6题〗(练习题所在文件夹:174)

*题目:计算S=2+4+6+...+98+100的程序。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 store 0 to s,i

***********FOUND********** do i<=99

***********FOUND********** i=i+1 s=s+i enddo ?\答案:

1). do while i<=99 或 do while i<100 或 dowhilei<=98 或 dowhilei<99 2). I=2+I 或 I=I+2 或 STORI+2TOI

〖第7题〗(练习题所在文件夹:520)

*题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, * 还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉 * 一半,又多吃了一个。以后每天早上都吃了前一天剩下的一 * 半零一个。到第10天早上想再吃时,见只剩下一个桃子了。 * 求第一天共摘了多少。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 set talk off clear DAY=9

***********FOUND********** X2=0

DO WHILE DAY>0

***********FOUND********** X1=(X2+1)/2 X2=X1

***********FOUND********** DAY=DAY+1 ENDDO

? \第一天摘下\个桃子\SET TALK ON 答案:

1). X2=1

2). X1=(X2+1)*2 3). DAY=DAY-1

〖第8题〗(练习题所在文件夹:175)

*题目:打开XSDB.DBF数据表, 分别统计男、女生的人数。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

STOR 0 TO B,G

DO WHILE .NOT.EOF()

***********FOUND********** IF 性别<>男 B=B+1

***********FOUND********** ENDIF G=G+1

ENDIF SKIP ENDDO

?\男生人数是:\?\女生人数是:\答案:

1). IF 性别=\男\或 IF 性别<>\女\ 2). ELSE

〖第9题〗(练习题所在文件夹:188)

*题目:显示XSDB.DBF中每个学生的姓名、计算机成绩和等级;等 * 级划分如下:计算机成绩大于等于90显示\优秀\;60到89 * (包括 60和89)之间显示\及格\;60分以下显示\补考\。 * 如显示:张丽娜 90 优秀 。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

DO WHIL .NOT. EOF()

***********FOUND********** LIST 姓名,计算机 DO CASE

CASE 计算机>=90 ??'优秀' CASE 计算机>=60 ??'及格' OTHERWISE

??'补考' ENDCASE

***********FOUND********** GO NEXT ENDDO USE 答案:

1). ? 姓名,计算机 或DISPLAY姓名,计算机

2). SKIP 或 SKIP 1

〖第10题〗(练习题所在文件夹:191)

*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 S1=0

***********FOUND********** S2=0

FOR I=1 TO 5

INPUT \请输入第\数\***********FOUND********** IF INT(M/2)=0 S1=S1+M ELSE S2=S2*M ENDIF ENDFOR

? \奇数和是\? \偶数积是\答案:

1). S2=1 或 STOR 1 TO S2

2). IF MOD(M,2)<>0 或 IF MOD(M,2)#0 或 IF INT(M/2)<>M/2 或 IF INT(M/2)#M/2 或 IF M%2 <>0 或 IF M%2!=0 或 IF M%2#0

〖第11题〗(练习题所在文件夹:182)

*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录 * 的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则 * 显示:\查无此人!\。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

***********FOUND********** FIND FOR 姓名=\徐秋实\IF .NOT.FOUND() ?\查无此人!\ELSE

***********FOUND**********

?系别,姓名, \计算机=\计算机, \英语=\英语 ENDIF USE RETURN 答案:

1). LOCATE FOR姓名=\徐秋实\或 LOCATE AL LFOR姓名=\徐秋实\ 2). ? 系别,姓名,\计算机=\计算机),\英语=\英语)

或 ?系别,姓名,\计算机=\计算机, \英语=\英语

〖第13题〗(练习题所在文件夹:161)

*题目:从键盘输入一个表名,打开该表文件,移动记录指针到 * 文件头,输出当前记录号;在移动记录指针到文件尾, * 输出当前记录号。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF ACCEPT TO A

**********FOUND********** FIND A GO TOP

**********FOUND********** NEXT

? RECNO( ) GO BOTTOM

**********FOUND********** NEXT -1 ? RECNO( ) USE

SET TALK ON 答案:

1). USE(A) 或 USE&A 2). SKIP-1

3). SKIP 或 SKIP 1

〖第14题〗(练习题所在文件夹:162)

*题目:从键盘输入一个表文件名,打开该表, 查找\姓名\是 * \张东\的记录,并显示该记录, 最后输出\姓名\是\张 * 东\的记录个数。(设被打开的表中有固定字段\姓名\*注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF ACCEPT TO A USE &A

**********FOUND********** N=1

SCAN FOR 姓名= \张东\**********FOUND********** LIST N=N+1 ENDSCAN

**********FOUND********** ? 记录个数是,N USE

SET TALK ON 答案:

1). N=0 或 Store0ToN 2). DISPLAY 或 DISP

3). ? \记录个数是\或 ? \记录个数是\

〖第16题〗(练习题所在文件夹:92)

*题目:求X =1+2+3+… +100,并同时求出 1到100 之间的奇数之和Y, * 而且显示输出这两个和。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 CLEAR

STORE 0 TO I , X , Y

***********FOUND********** DO WHILE I<=100 I = I+1 X =X+I

IF I/2 = INT(I/2)

***********FOUND********** EXIT ENDIF Y=Y+I ENDDO ?X,Y RETURN 答案:

1). DO WHILE I<100 或 DO WHILE I<=99 2). LOOP

〖第17题〗(练习题所在文件夹:501)

*题目:STUDENT.DBF是一个学生信息文件,包含学号(C 8)、 * 姓名(C 8)、性别(C 2)、政治面貌(C 4)、班级(C 5) * 等字段;其中性别用字符串\男\或\女\表示,政治面貌 * 用字符串\党员\、\团员\或\群众\表示。

* 程序的功能是:显示输出所有政治面貌为\群众\的男生姓 * 名和班级。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 set talk off clear

USE STUDENT

LOCATE FOR 政治面貌=\群众\***********FOUND********** DO WHILE .not. FOUND() IF 性别=\女\

CONTINUE

***********FOUND********** break ENDIF

? 姓名,班级

***********FOUND********** skip ENDDO USE

SET TALK ON 答案:

1). DO WHILE FOUND() 或DO WHIL .not.eof() 2). LOOP 3). CONTINUE

x〖第19题〗(练习题所在文件夹:148)

*题目:从键盘上输入任意一串字符,判断是否回文。 * 例如:MUM、456654,MADAM。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF ACCEPT \L=LEN(A) FLAG=1 I=1

**********FOUND**********

DO WHILE FLAG=1 OR I<=INT(L/2) **********FOUND**********

IF SUBS(A,I,1)<>SUBS(A,L-I,1) FLAG=0 ENDIF I=I+1 ENDDO

**********FOUND********** IF FLAG=0

? \是回文\ELSE

? \不是回文\ENDIF CANCEL 答案:

1). DO WHILE FLAG=1 AND I<=INT(L/2) 2). IF SUBSTR(A,I,1)<>SUBSTR(A,L-I+1,1) 3). IF FLAG=1

〖第20题〗(练习题所在文件夹:189)

*题目:从键盘输入一个数X,当X大于0、Y的值为1;当X等于0、Y的 * 值为0;当X小于0、Y的值为-1, 然后输出Y的值。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 INPUT \输入一个数X:\***********FOUND********** IF X>0 IF X>0 Y=1 ELSE Y=0

ENDIF ELSE

Y=-1 ENDIF

***********FOUND********** ?\答案:

1). IF X>=0 或 IF 0<=X

2). ? \或? \

〖第22题〗(练习题所在文件夹:505)

*题目:计算并显示输出数列1,-1/2, 1/4, -1/8, 1/16 … 的 * 前10项之和。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 set talk off clear Y=0

STORE 1 TO I,C

***********FOUND********** DO WHILE I<=10 Y=Y+(-1)^(C+1)/I

***********FOUND********** I=-I*2 C=C+1

***********FOUND********** ENDIF

? \数列前10项之和为:\SET TALK ON RETURN 答案:

1). DO WHILE C<=10 或 DO WHILE C<11 2). I=I*2 或 I=-I*(-2) 3). ENDD 或 ENDDO

〖第23题〗(练习题所在文件夹:156) *题目:求1+5+9+13+…+97的和。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF S=0

**********FOUND********** N=0

DO WHILE N<=97

**********FOUND********** S=S+1 N=N+4

**********FOUND********** ENDWHILE ? S

SET TALK ON 答案:

1). N=1 或 STOR 1 TO N 2). S=S+N 或 S=N+S 3). ENDDO 或 ENDD

〖第24题〗(练习题所在文件夹:165)

*题目:求1到10之间奇数的阶乘和t=1!+3!+5!+…+9!

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 **********FOUND********** t=1 P=1 I=1

**********FOUND********** Do while I>10 P=p*I

**********FOUND********** If int(i/2)=i/2 T=t+p Endif I=I+1 Enddo ?\答案:

1). t=0

2). do while i<10 3). != 或 <> 或 #

〖第25题〗(练习题所在文件夹:168)

USE RSH XM=\赵红\

LOCATE FOR 姓名 = XM ***********FOUND********** IF BOF()

WAIT \查无此人! \ELSE

***********FOUND********** ? \工资+职称\ENDIF USE 答案:

1). IFEOF() 或 IF.NOT.FOUN() 或 IFEOF()=.T. 或 IFNOTEOF()=.F. 或 IF!EOF()=.F. 或 IFEOF()<>.F. 或 IFNOTEOF<>.T. 或 IF!EOF()<>.T. 或 IFFOUN()=.F. 2). ?工资,职称 或 ?STR(工资)+职称 或 DISPLAYFIELD工资,职称

〖第50题〗(练习题所在文件夹:193)

*题目:有一个字符串\将其插入3个数字转换为:\输出。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 C1=\C2=\

FOR I=1 TO 3

***********FOUND********** A=SUBS(C1,I)

***********FOUND********** C2=C2+A+I ENDFOR ?C2 答案:

1). A=SUBS(C1,I,1) 或 A=SUBSTR(C1,I,1) 或 STOR SUBS(C1,I,1) TO A 或 STOR SUBSTR(C1,I,1) TO A

2). C2=C2+A+STR(I,1) 或 STORC2+A+STR(I,1)TOC2

〖第52题〗(练习题所在文件夹:39)

*题目:将XSDB.DBF表中奖学金超过60元的学生姓名和奖学金显示 * 在屏幕上。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

***********FOUND********** IF 奖学金>\

DO WHILE .NOT.EOF()

***********FOUND**********

?\姓名=\姓名,\奖学金=\奖学金

CONT ENDDO USE 答案:

1). LOCATE FOR 奖学金>60 或 LOCATE ALL FOR 奖学金>60 或 LOCATE FOR 奖学金>=61 或 LOCATE ALL FOR 奖学金>=61

2). ?\姓名=\姓名,\奖学金=\奖学金,4,1) 或 ?\姓名=\姓名,\奖学金=\奖学金) 或 ?[姓名=]+姓名,[奖学金=]+STR(奖学金,4,1) 或 ?[姓名=]+姓名,[奖学金=]+STR(奖学金) 或 ?'姓名='+姓名,'奖学金='+STR(奖学金,4,1) 或 ?'姓名='+姓名,'奖学金='+STR(奖学金) 或 ?\姓名=\姓名,\奖学金=\奖学金

〖第53题〗(练习题所在文件夹:178)

*题目:打开表XSDB.DBF, 查找计算机和英语的平均成绩最高的学生, * 并显示姓名和计算机、英语成绩。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB JSJ=计算机 YY=英语 XM=姓名

PJ=(JSJ+YY)/2

DO WHILE .NOT.EOF()

***********FOUND********** X=计算机+英语

***********FOUND********** IF PJ>X JSJ=计算机 YY=英语 XM=姓名 PJ=X ENDIF

***********FOUND********** Continue ENDDO

?XM,JSJ,YY 答案:

1). X=(计算机+英语)/2 或 X=(英语+计算机)/2 2). IF X>PJ 或 IF PJ

〖第54题〗(练习题所在文件夹:194)

*题目:打开表XSDB.DBF,统计姓张、姓王、姓李,三个姓的学生 * 人数并将人数输出。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

C=0

***********FOUND**********

LOCA 姓名=\张\王\李\DO WHILE FOUN() C=C+1

***********FOUND********** COUN ENDDO ?C USE 答案:

1). LOCATE FOR姓名=\张\姓名=\王\姓名=\李\ 2). CONTINUE

〖第55题〗(练习题所在文件夹:43)

*题目:通过字符串变量操作先竖向显示\伟大祖国\,再横向显示 * \祖国伟大\。

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 STORE \伟大祖国\CLEA

***********FOUND********** N=0

DO WHILE N<8 ?SUBS(XY,N,2) N=N+2 ENDDO ?

***********FOUND********** ??SUBS(XY,4,4) ??SUBS(XY,1,4) 答案:

1). N=1 或 STOR 1 TO N

2). ??SUBS(XY,5,4) 或 ??SUBS(XY,n-4,4)

〖第57题〗(练习题所在文件夹:48)

*题目:在XSDB.DBF表中统计法律和中文两个系的总人数和奖学金总额。 *注意:不可以增加或删除程序行,也不可以更改程序的结构。 USE XSDB

STORE 0 TO R,S DO WHILE .T.

***********FOUND**********

IF 系别=\法律\系别=\中文\STORE S+奖学金 TO S

R=R+1 ENDIF SKIP

***********FOUND********** IF .NOT.FOUN() EXIT ENDIF ENDDO ? S, R USE 答案:

1). IF 系别=\法律\系别=\中文\或 2). IF EOF() 或 IF NOTEOF()=.F.

〖第58题〗(练习题所在文件夹:197)

*题目:打印由数字组成的图形,要求第一行空10个空格打印5个1,第 * 二行空11个空格打印5个2…,图形如下: * 11111 * 22222 * 33333 * 44444 * 55555

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 CLEA

FOR I=1 TO 5

***********FOUND********** ?SPAC(9-I) FOR J=1 TO 5

***********FOUND********** ??STR(J,1) ENDFOR ENDFOR 答案:

1). ? SPACE(9+I) 2). ?? STR(I,1)

x〖第61题〗(练习题所在文件夹:519)

*题目:一球从100米高度自由落下,每次落地后反跳回原高度的 * 一半;再落下,求它在第10次落地时,共经过多少米? * 第10次反弹多高?

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 set talk off clear

***********FOUND**********

H=0 h1=h/2

***********FOUND********** FOR I=2 TO 9

***********FOUND********** H =H+H1 h1=h1/2 endf

? \在第10次落地时,共经过\米\? \第10次反弹\米\SET TALK ON 答案:

1). h=100

2). fori=2to10 3). H=H+2*h1

〖第62题〗(练习题所在文件夹:158) *题目:键盘输入X值时,求其相应的Y值 * ┌ -1 (X<0) * │

* Y=├ 0 (X=0) * │

* └ 1 (X>0)

*注意:不可以增加或删除程序行,也不可以更改程序的结构。 SET TALK OFF

**********FOUND********** ACCEPT \请输入一个数:\**********FOUND********** DO WHILE

CASE X<0 Y=-1 CASE X=0 Y=0

**********FOUND********** DEFAULT X>0 Y=1 ENDCASE ? Y

SET TALK OFF 答案:

1). INPUT 2). DO CASE

3). OTHERWISE 或 case x>0

本文来源:https://www.bwwdw.com/article/0ojr.html

Top