程序改错69题答案

更新时间:2024-01-18 07:49:01 阅读量: 教育文库 文档下载

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

三、程序改错

注意:不可以增加或删除程序行,也不可以更改程序的结构。 1.题目:计算1!+2!+3!+...+10! SET TALK OFF S=0 N=1

**********FOUND**********DO ★WHILE★ N<=10 或 DO ★WHILE★ 10>=N DO WHILE N>=10 STOR 1 TO I,P DO WHILE I<=N

**********FOUND**********P=I*P 或 P=P*★I P=P*N I=I+1 ENDDO S=S+P N=N+1 ENDDO ?S

SET TALK ON RETURN

2.题目:计算并在屏幕上显示出\九九乘法表\,显示格式如下: 1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9 … …

1×9=9 … 8×9=72 9×9=81 SET TALK OFF CLEAR X=1

DO WHILE X<=9 Y=1

**********FOUND**********DO ★WHILE★ Y<=X 或 DO ★WHILE★ X>=Y DO WHILE Y<=9

??STR(X)+\ **********FOUND**********Y=Y+1 或 Y=1+Y Y=Y*1 ENDDO ? X=X+1 ENDDO

SET TALK ON RETURN

3.题目:根据输入的数据,计算不大于该数的奇数累加和。 SET TALK OFF

CLEAR YN=\

DO WHILE UPPER(YN)=\

INPUT \请输入2位以内的整数\ STORE 0 TO X,Y Z=\

DO WHILE X

IF INT(X/2)=X/2

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

Z=Z+\

**********FOUND**********Y=X+Y 或 Y=★Y+X Y=Y+Z ENDIF ENDDO

?Z+\=\

WAIT \继续计算?(Y/N)\ ENDDO ?\再见:\ SET TALK ON RETURN

4.题目:通过临时数据LSH.DBF向学生数据库RS.DBF中追加数据记录。 SET TALK OFF USE RS

COPY TO LSH USE LSH ZAP I=0 ANS=\

**********FOUND**********DO ★WHILE ★UPPER(ANS)★= \

或 DO ★WHILE ★LOWER(ANS)★='y' 或 DO ★WHILE★ ANS=\

DO WHILE ANS=\ CLEAR I=I+1

@10,1 SAY\请输入第\添加记录的数据\ APPE BLANK

@11,1 SAY \编号:\ @12,1 SAY \姓名:\ @13,1 SAY \性别:\ @14,1 SAY \出生年月:\ @15,1 SAY \婚否:\ @16,1 SAY \职称:\

@17,1 SAY \工资:\ READ

WAIT\是否正确?(Y/N)\ IF UPPER(ANS)<>\ I=I-1 ANS=\ LOOP ENDIF

WAIT \是否继续添加?(Y/N)\ ENDDO USE RS

**********FOUND**********APPEND ★FROM APPE LSH CLEAR USE

SET TALK ON RETURN

5.题目:根据输入的编号查找RS数据库中的工资。 SET TALK OFF USE RS YN=\

DO WHILE UPPER(YN)=\ CLEAR

**********FOUND**********ACCEPT \请输入4位编号\ WAIT \请输入4位编号\ IF NUM=\

?\无效输入,请重新输入\ LOOP ENDIF

**********FOUND**********★LOCATE★ FOR NUM=BH FIND FOR NUM=BH IF FOUND()

@10,10SAY XM @10,40 SAY GZ ELSE

?NUM,\没找到\ ENDIF

WAIT \是否继续(Y/N)\ ENDDO USE RETURN

6.题目:该程实现由键盘输入三个数,按从小到大的顺序排序。 SET TALK OFF

INPUT\请第一个数的值:\

INPUT\请第二个数的值:\ INPUT\请第三个数的值:\ IF A>B T=A A=B

**********FOUND**********B=T T=B ENDIF IF A>C T=A A=C C=T ENDIF IF B>C T=B B=C C=T ENDIF

**********FOUND**********?A,B,C ? C,B,A SET TALK ON RETURN

7.题目:对RS.DBF数据库按职称建立职称库,分别产生以职称为教授的数据库JS.DBF,职称为副教授的数据库FJS.DBF,职称为讲师的数据库JSHI.DBF,职称为助教的数据库ZJ.DBF,并用菜单形式显示,输入1时,显示数据库JS.DBF,输入2时,显示数据库FJS.DBF…。 SET TALK OFF USE RS

COPY TO JS FOR ZC=\教授\ COPY TO FJS FOR ZC=\副教授\ COPY TO JSHI FOR ZC=\讲师\ COPY TO ZJ FOR ZC=\助教\

@ 10,40 SAY \显示教授库信息\ @ 11,40 SAY \显示副教授库信息\ @ 12,40 SAY \显示讲师库信息\ @ 13,40 SAY \显示助教库信息\

**********FOUND**********@ 14,40 ★SAY★ \\ @ 14,40 READ \退出\

ACCEPT \请输入要显示的职称库\ CLEAR DO CASE

**********FOUND**********CASE ANS=★\ CASE ANS=1 USE JS LIST

CASE ANS=\ USE FJS LIST CASE ANS=\ USE JSHI LIST CASE ANS=\ USE ZJ LIST CASE ANS=\ EXIT ENDCASE RETURN

8.题目:按照工资计算数据库RS中的最低工资、最高工资及平均工资,并存放到内存变量文件TJGZ.MEM中。 SET TALK OFF USE RS

AVER GZ TO MIDGZ GO TOP MAXGZ=GZ MINGZ=GZ

DO WHILE NOT EOF() IF MAXGZ

IF MINGZ>GZ

**********FOUND**********MINGZ★=GZ GZ=MINGZ ENDIF SKIP ENDDO

**********FOUND**********SAVE TO TJGZ.MEM ALL ★LIKE★ M* SAVE TO TJGZ.MEM ALL EXCEPT M* USE RETURN

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

SET TALK OFF CLEAR

STORE 0 TO I , X , Y

**********FOUND**********DO ★WHILE★ I<100 或 DO ★WHILE★ 100>I DO WHILE I < =100 I = I + 1 X =X + I

IF I / 2 = INT ( I / 2) **********FOUND**********LOOP EXIT ENDIF Y = Y +I ENDDO ? X,Y

SET TALK ON RETURN

10.题目:在rs.dbf 中,查找职工王洋的工资,如果工资小于200元,则增加100元;如果工资大于等于200元且小于500元时,则增加50元;否则增加20元。最后显示王洋的姓名和工资。 SET TALK OFF CLEAR

USE RS.DBF

**********FOUND**********LOCATE★ FOR XM =★\\ LOCATE FOR XM =王洋 DO CASE

CASE GZ < 200

REPLACE GZ WITH GZ + 100 CASE GZ < 500

REPLACE GZ WITH GZ + 50 OTHERWISE

REPLACE GZ WITH GZ + 20 ENDCASE

**********FOUND**********DISPLAY★ XM,GZ LIST XM , GZ USE

SET TALK ON RETURN

11.题目:根据姓名查询rs.dbf 中的职工情况,如果有则显示该职工的内容,否则显示\查无此人,按任意键继续……\序。

SET TALK OFF CLEAR

USE RS.DBF DO WHILE .T.

ACCEPT \请输入要查询的职工姓名:\ LOCATE FOR XM = NAME

**********FOUND**********IF EOF ( ) IF BOF ( )

WAIT \查无此人,按任意键继续……\ ELSE

DISPLAY

ENDIF

WAIT \继续查询吗?(Y / N)\ IF UPPER (CX) <.> 'Y' **********FOUND**********EXIT LOOP ENDIF ENDDO USE

SET TALK ON RETURN

12.题目:查找rs.dbf 中女职工的工资最大值,并显示其姓名和工资。 SET TALK OFF CLEAR

USE RS.DBF MGZ = 0

MXM = SPACE (8)

**********FOUND**********SCAN ★FOR★ XB = \\ SCAN XB = \女\ IF MGZ< GZ MGZ = GZ MXM = XM ENDIF ENDSCAN

**********FOUND**********? MXM , MGZ ? XM , GZ USE

SET TALK ON RETURN

13.题目:统计rs.dbf 中职称是教授、副教授、讲师和助教的人数。 SET TALK OFF CLEAR

USE RS.DBF

**********FOUND**********STORE ★ 0 TO A , B , C , D STORE 1 TO A , B , C , D DO WHILE .NOT.EOF ( ) DO CASE

CASE ZC = \教授\ A = A + 1 CASE ZC = \副教授\ B = B + 1 CASE ZC = \讲师\ C = C + 1 CASE ZC = \助教\ D = D + 1

**********FOUND**********ENDCASE ENDDO SKIP ENDDO USE

? A,B,C,D SET TALK ON RETURN

14.题目:将0到100之间的所有能被2整除的数显示出来,并计算和显示不被2整除数之和的程序。 set talk off clear

**********FOUND**********s=0 s=1 i=0

do while i<=100

**********FOUND**********if int(i/2)=(i/2) if round(i/2)=(i/2) ??i else

s=s+i endif i=i+1 enddo ?\ set talk on return

15.题目:计算S=1!+2!+3!+4!+5!+6!+7!+8!+9!+10! 的程序 set talk off clear

store 0 to s store 1 to i,t do while i<=10

**********FOUND**********store ★1★ to j,t store 0 to j,t do while j<=i t=t*j j=j+1 enddo

**********FOUND**********s=t+s 或 s=s+★t s=s+j i=i+1 enddo ?\

set talk on return

16.题目:先从键盘输入10个同学的英语成绩(分数从0至100),然后找出最高和最低英语成绩的程序。 set talk off clear

input \请输入英语成绩(1--100):\ i=1

store n to min,max do while i<10

input \请输入英语成绩(1--100):\ do case

case m<0 .or. m>100

?\输入成绩有错,重新输入!\ **********FOUND**********loop skip

case maxm

**********FOUND**********min★=m min=n endcase i=i+1 enddo

?\最高英语成绩:\ ?\最低英语成绩:\ set talk on return

17.题目:判断一个自然数是否为质数,质数为仅能被1和自身整除的整数。 SET TALK OFF CLEAR

**********FOUND**********INPUT \请输入一个大于1的自然数:\ ACCEPT \请输入一个大于1的自然数:\

K=1 &&K的值为1表示所输入的自然数是质数,为0表示不是质数 J=2

DO WHILE J

**********FOUND**********IF MOD(N,J)★<>★0 IF MOD(N,J)=0 J=J+1 LOOP ELSE K=0 EXIT ENDIF

ENDDO CLEAR IF K=1

?STR(N,5)+\是质数\ ELSE

?STR(N,5)+\不是质数\ ENDIF

SET TALK ON RETURN

18.题目:从键盘输入一段字符(包含英文字母和数字),计算所含英文字母的个数。 SET TALK OFF CLEAR

AA=SPACE(40)

**********FOUND**********M=0 M=1

@10,10 SAY \请输入一段字符:\ READ

Y=LEN(TRIM(AA)) FOR X=1 TO Y

**********FOUND**********P=SUBSTR(AA,★X,1) P=SUBS(AA,1,X)

IF P>'A'.AND.P<'Z'.OR.P>'a'.AND.P<'z' M=M+1 ENDIF ENDFOR CLEAR

?\包含英文字母的个数是:\ SET TALK ON

19.题目:计算STUDENT.DBF库文件中每名考生的总分,并填入各记录的总分成绩中,再按班级对总分进行分类汇总存入SH.DBF文件中,并显示汇总后的结果。 SET TALK OFF CLEAR

USE STUDENT

**********FOUND**********★REPLACE★ ALL ZF WITH YY+SX+JSJ

或 ★REPLACE★ ALL ZF WITHYY+JSJ+SX 或 ★REPLACE★ ALL ZF WITH SX+YY+JSJ 或 ★REPLACE★ ALL ZF WITH SX+JSJ+YY 或 ★REPLACE★ ALL ZF WITH JSJ+SX+YY 或 ★REPLACE★ ALL ZF WITH JSJ+YY+SX

REPL ZF WITH YY+SX+JSJ INDEX ON BJ TO BJ

**********FOUND**********★TOTAL★ ON BJ TO SH ★FIELDS★ ZF SORT ON BJ TO SH FIELDS ZF USE SH

LIST USE

SET TALK ON

20.题目:计算STUDENT.DBF数据库中各条记录总分,并从尾部向头部方向依次显示总分大于等于240分的记录。 SET TALK OFF CLEAR

USE STUDENT

REPL ALL ZF WITH YY+SX+JSJ GO BOTTOM

**********FOUND**********DO ★WHILE★ .NOT.★BOF★() DO WHILE .NOT. EOF() IF ZF>=240 ?XM,ZF

WAIT\按任意键继续查询……\ ENDIF

**********FOUND**********SKIP ★ -1 SKIP ENDDO CLOSE ALL SET TALK ON

21.题目:打开数据库XSDB.DBF, 统计学生总人数, 计算机平均成绩,英语平均成绩,奖学金总额等,然后在该数据库后追加一个空记录,将系别字段添入\统计结果\,将姓名字段填入统计的总人数、英语和计算机字段添入其平均成绩、奖学金字段填入统计的总金额。 SET TALK OFF CLEAR USE XSDB COUN TO RS

**********FOUND**********AVERAGE★ 计算机,★英语 TO JSJ,YY AVERAGE 计算机 TO JSJ,英语 TO YY SUM 奖学金 TO JXJ APPEND BLAN

REPLACE 系别 WITH \统计结果\

REPLACE 计算机 WITH JSJ,英语 WITH YY,奖学金 WITH JXJ **********FOUND**********REPLACE★ 姓名 WITH ★STR(RS,3) REPLACE 姓名 WITH RS USE RETURN

22.题目:通过选择菜单中的操作, 根据输入的记录号对库文件XSDB.DBF中指定记录进行相应的操作。 USE XSDB DO WHILE .T.

?\插入记录 2-修改记录 3-显示记录\ ?\逻辑删除 5-恢复记录 0-结束程序\

INPUT \请选择(1,2,3,4,5,0):\

**********FOUND**********IF ★ANS>0★.AND.★ANS<=5★

或 IF ★ANS>0★.AND.★5>=ANS★ 或 IF ★0=ANS★

IF ANS>0.OR.ANS<=5

INPUT \请输入记录号:\ GO JLH ENDIF DO CASE

CASE ANS=1 INSE CASE ANS=2 EDIT CASE ANS=3 DISP CASE ANS=4 DELE CASE ANS=5

**********FOUND**********RECALL PACK OTHERWISE

EXIT ENDCASE ENDDO USE RETURN

23.题目:修改XSDB.DBF中的数据,先接收用户输入的记录号, 然后定位到该记录,修改计算机、英语、奖学金三个字段的值,通过用户确认继续修改或退出。 USE XSDB

DO WHILE .NOT. EOF() CLEAR

INPUT \请输入要修改的记录号:\

**********FOUND**********GOTO ★JLH 或 GO JLH GO &JLH

@4,1 SAY \计算机成绩:\计算机 @6,1 SAY \英语成绩:\英语 @8,1 SAY \奖学金:\奖学金 **********FOUND**********READ ACCEPT ANS=\

@10,10 SAY \继续修改吗(Y/N)?\ READ

IF ANS<>\

EXIT ENDIF ENDDO USE RETURN 24.题目:接收用户输入的姓名,在XSDB.DBF中查找学生记录, 如果找到则修改该记录, 否则显示:\查无此人!\。根据用户的确认继续查找或退出。 USE XSDB DO WHILE .T.

ACCEPT \请输入学生姓名:\ LOCATE FOR 姓名=NAME IF .NOT. FOUND() ?\查无此人!\ ELSE

**********FOUND**********EDIT 或 BROWSE DISP ENDIF

WAIT \继续查找吗(Y/N)?\

**********FOUND**********IF UPPER(GOON)=\或 LOWER(GOON)=\ IF GOON=\ CLEAR LOOP ELSE EXIT ENDIF ENDDO USE RETURN

25.题目:将200到300之间的所有能被3整除或被5整除的数求和并统计个数。 SET TALK OFF CLEAR

STORE 0 TO S,C I=200

DO WHILE I<=300

**********FOUND**********IF INT(I/3)=I/3★.OR.★INT(I/5)=I/5

或 IF MOD(I,3)=0★.OR.★MOD(I,5)=0 或 IF X%3=0 ★AND★ X%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 X%5=0 ★AND★ X%3=0

IF INT(I/3)=INT(I/5) S=S+I C=C+1 ENDIF

I=I+1 ENDDO

**********FOUND**********?\到300之间的所有能被3整除或被5整除的数之和=\

?\到300之间的所有能被3整除或被5整除的数之和=\

?\到300之间的所有能被3整除或被5整除的数的个数=\ SET TALK ON RETURN

26.题目:接收键盘输入的任意5个整数(不超过3位数), 找出其中的最大数和最小数并显示。

INPUT \请输入第一个数:\ STORE X TO MA, MI N=5

**********FOUND**********DO ★WHILE★ N>1 或 DO ★WHILE★ 1=5

INPUT \请输入下一个数:\ IF MAX MI=X ENDIF N=N-1 ENDDO

**********FOUND**********?\最大数:\ ?\最大数:\最小数:\ RETURN

27.题目:依次判别XSDB.DBF中学号为偶数的记录, 将其加上逻辑删除标记, 并将它们拷贝新的数据库NEW.DBF中, 再把原数据库中逻辑删除标记恢复。然后统计NEW.DBF中记录的个数并显示。 SET TALK OFF USE XSDB

DO WHILE .NOT.EOF() XH=VAL(学号)

**********FOUND**********IF INT★(XH/2)★=XH/2 或 IF MOD(XH,2)=★0 或 IF ★XH%2★=★0

IF MOD(XH,2)=XH/2 DELE ENDIF SKIP ENDDO

COPY TO NEW FOR DELE()

**********FOUND**********RECALL★ ALL REPLACE

USE NEW COUN TO NUM ?NUM USE

SET TALK ON RETURN

28.题目:从键盘输入十个非零整数,统计能被3整除的数的个数。 SET TALK OFF CLEAR

**********FOUND**********I=0 I=1 A=0

DO WHILE I<10

INPUT \请输入一个整数:\

**********FOUND**********IF INT(N/3)=★N/3 IF (N/3)=0 A=A+1 ENDIF I=I+1 ENDDO ?A

SET TALK ON

29.题目:显示XSDB.DBF中每个学生的姓名、计算机成绩和等级;等级划分如下:计算机成绩大于等于90显示\优秀\;60(含60)~89之间显示\及格\;低于60分,显示\补考\。如显示:张丽娜 90 优秀 。 SET TALK OFF USE XSDB

DO WHIL .NOT. EOF()

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

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

??'补考' ENDCASE

**********FOUND**********SKIP GO NEXT ENDDO USE RETURN

30.题目:分别统计XSDB中英语和计算机平均成绩大于80分的男、女生人数,并将79年

APPE

@1,1 SAY \学号\学号 @2,1 SAY \系别\系别 @3,1 SAY \姓名\姓名 READ

WAIT \继续添加记录吗?(y/n)\ ANS=LOWER(ANS) DO CASE

CASE ANS=\

**********FOUND**********LOOP SKIP CASE ANS=\ EXIT ENDCASE ENDDO USE

42.题目:判别100到200之间的数能否同时被5、6整除、能否被5、6之一整除和不能被5或6整除等,将判别结果显示出来。 SET TALK OFF i=100

DO WHILE i<=200 DO CASE

**********FOUND**********CASE ★INT(i/5)=I/5★.AND.★INT(i/6)=I/6

或 CASE ★MOD(I,5)=0★.AND.★MOD(I,6)=0 或 CASE ★I%5=0 ★AND★ I%6=0

或 CASE ★INT(i/6)=I/6★.AND.★INT(i/5)=I/5 或 CASE ★MOD(I,6)=0★.AND.★MOD(I,5)=0 或 CASE ★I%6=0 ★AND★ I%5=0

CASE INT(i/5)=0.OR.INT(i/6)=0 ? i,\能同时被5和6整除\ CASE MOD(i,5)=0

? i,\只能被5整除\ CASE MOD(i,6)=0

? i,\只能被6整除\

**********FOUND**********OTHERWISE ELSE

? i,\不能被5或6整除\ ENDCASE i=i+1 ENDDO

SET TALK ON

2222

43.题目:以下程序的功能如下:计算2+3+4+……+N的值并显示输出结果。 SET TALK OFF CLEAR

T=0 I=2

INPUT \

**********FOUND**********DO ★WHILE★ I<=N 或 DO ★WHILE★ N>=I DO WHILE .NOT.EOF() T=T+I^I

**********FOUND**********I=2+I 或 I=I+★2 I=I+T ENDDO

?\ SET TALK ON RETURN

44.题目:对数据库XSDB.DBF中的计算机和英语都大于等于90分以上的学生奖学金进行调整:法律系学生奖学金增加12元、英语系学生奖学金增加15元、中文系学生奖学金增加18元,其他系学生奖学金增加20元。 USE XSDB

**********FOUND**********LOCATE★ FOR ★90<=英语★.AND.★计算机>=90

或 LOCATE★ FOR ★英语>=90★.AND.★90<=计算机 或 LOCATE★ FOR ★英语>=90★.AND.★计算机>=90 或 LOCATE★ FOR ★90<=英语★.AND.★90<=计算机

FIND 计算机.AND.英语>=90 DO WHILE FOUND() DO CASE

CASE 系别=\法律\ ZJ=12

CASE 系别=\英语\ ZJ=15

CASE 系别=\中文\ ZJ=18 OTHE

ZJ=20 ENDCASE

**********FOUND**********REPLACE★ 奖学金 WITH ★奖学金★+ZJ

或 REPLACE★ 奖学金 WITH ★ZJ+★奖学金

REPL 奖学金 WITH ZJ CONTINUE ENDDO USE RETURN

45.题目:计算表达式3!+5!+7!的值,该程序有4处错误,请找出并改正,使程序能够正常运行。 CLEAR Y=0 M=2

W=1

***********FOUND**********DO ★WHILE★ M<=7 或 DO ★WHILE★ 7>=M DO WHILE M<7 W=W*M

***********FOUND**********IF M/2★<>★INT(M/2) IF M/2=INT(M/2) Y=Y+W ENDIF

***********FOUND**********M=M★+★1 M=M+2 ENDDO

***********FOUND**********?\ ? \ SET TALK ON

46.题目:下面程序中,是统计XS.DBF中的男生人数,程序中有四处错误,请改正之. SET Talk Off CLEA USE XS S=0

***********FOUND**********DO★WHILE★.NOT.★EOF() DO WHILE EOF() IF 性别=\女\ SKIP

***********FOUND**********LOOP EXIT ENDIF

***********FOUND**********S=★S★+★1 S=S-1

***********FOUND**********SKIP CONTINUE ENDDO USE

? \男生人数是:\ set talk on RETURN

47.题目:求20以内(含20)偶数和。该程序有四处错误,找到并改正,使之能正确运行。 S=0 N=1

***********FOUND**********DO ★WHILE★ N<=20 或 DO ★WHILE★ 20>=N DO WHILE N<20 A=N/2

B=INT(N/2)

***********FOUND**********IF A★=B IF A<>B

S=S+N ENDIF

***********FOUND**********N=N★+★1 N=N+2 ENDDO

***********FOUND**********?\ ?\ ?\ ? \ RETURN

48.题目:可以选择列出数据库XS.DBF中全体同学情况、全体男同学情况、全体女同学情况。该程序有4处错误,请找出并改正,使程序能够正确运行。 CLEAR

AA=\

BB=\性别=[男]\ CC=\性别=[女]\ USE XS

@21,16 SAY \全体同学2:全体男同学3: 全体女同学\ @23,16 SAY \退出\ @23,34 SAY \请选择:\ WAIT TO J DO CASE

***********FOUND**********CASE ★J=\ CASE J=★'1' 或 CASE J=★[1] CASE J=0 &AA

CASE J=\

***********FOUND**********&BB BB

***********FOUND**********CASE J=★\ CASE J=★'3' 或 CASE J=★[3] CASE J={1} &CC OTHERWISE

***********FOUND**********RETURN EXIT ENDCASE USE RETURN

49.题目:在数据库XS.DBF中,根据计算机的成绩对总分做相应调整:计算机成绩在90分以上的总分加10分,计算机成绩在80分以上的总分加5分,计算机成绩60分以下的总分减2分。该程序有4处错误,请找出并改正,使之能够正确运行。 USE XS CLEAR

GOTO BOTTOM

***********FOUND**********DO ★WHILE★ .NOT. BOF() DO WHILE BOF() DO CASE

***********FOUND**********CASE 计算机>=80 ★AND★ 计算机<90 CASE 计算机>=80

REPLACE 总成绩 WITH 计算机+5 CASE 计算机>=90

REPLACE 总成绩 WITH 计算机+10 ***********FOUND**********CASE 计算机<60 OTHRWISE

REPLACE 总成绩 WITH 计算机-2 ENDCASE

***********FOUND**********SKIP★ -1 SKIP ENDDO LIST USE RETURN

50.题目:下面程序中,是计算1~N(N由键盘输入)之间的正整数中的偶数之和,程序中有四处错,请改正之. SET TALK OFF CLEA

***********FOUND**********INPUT★\ ACCEPT \ S=0 K=1

***********FOUND**********DO★WHILE★K<=N 或 DO★WHILE★N>=K DO WHILE K>=N

***********FOUND**********IF★INT(K/2)★=★K/2 IF INT(K/2)<>K/2 S=S+K K=K+1 ELSE K=K+1

***********FOUND**********LOOP EXIT ENDIF ENDD ?\ SET TALK ON

51.题目:下面程序完成的是一个对RS.DBF按姓名进行查询的功能,程序中有四处错,请改正之.

SET TALK OFF

***********FOUND**********USE RS USE &RS

DO WHILE .T. CLEA

ACCEPT \输入要查询人的姓名:\

***********FOUND**********LOCA★FOR 姓名★=NAME LOCA FOR 姓名=&NAME IF .NOT. EOF() DISP ELSE

? \查无此人!\ ENDIF

WAIT \是否继续查询(Y/N)?\

***********FOUND**********IF★UPPER★(KK)=\ IF★KK=\ IF KK=\ LOOP ENDIF

***********FOUND**********EXIT LOOP ENDDO USE

SET TALK ON

52.题目:使用BJ.DBF和XS.DBF两个数据库,在它们之间建立逻辑联接,然后为每个\计算机\班的学生成绩增加10分,最后显示全体学生的姓名、成绩和班级名.程序中有四处错,请改正之.

SET TALK OFF SELE 1 USE BJ

***********FOUND**********INDE ON 姓★名 TO INX INDE ON 姓名 INTO INX SELE 2 USE XS

***********FOUND**********SET RELA TO 姓名 ★INTO A SET RELA TO 姓名 ON A

***********FOUND**********REPL ALL 成绩 ★WITH 成绩+10 FOR 班级名=\计算机\ REPL ALL 成绩 TO 成绩+10 FOR 班级名=\计算机\ LIST 姓名,成绩,班级名

***********FOUND**********SET RELA★TO SET RELA WITH CLOS DATA SELE 1

SET TALK ON RETU

53.题目:反复从键盘输入姓名,在XS.DBF数据库中查找该人,找到后显示,为找到可继续查询,该程序有4处错误,请找出并改正,使程序正常运行。 SET TALK OFF CLEAR

USE XS

DO WHILE .T.

ACCEPT \请输入要查找的姓名:\ ***********FOUND**********LOCA FOR 姓名=XM FIND &XM

***********FOUND**********IF .NOT. ★EOF() IF NOT DISPLAY ELSE SF=\

WAIT \未查到,继续查询吗?(Y/N) \

***********FOUND**********IF UPPER(SF)★=★\ IF UPPER(SF)<> \

***********FOUND**********EXIT LOOP ENDIF ENDIF ENDDO USE

SET TALK ON SET EXACT OFF

54.题目:求XS.DBF数据库中平均成绩大于80分(含80分)男女生人数,把79年出生的女生生成新库,按出生日期的升序显示新库的姓名字段。该程序共有四处错误,找出并改正,使程序能正确运行。 SET TALK OFF CLEAR USE XS

TJ=\英语+计算机)/2>=80\

***********FOUND**********COUNT TO B ★FOR★ 性别=\男\ COUNT TO B 性别=\男\

***********FOUND**********COUNT TO B ★FOR★ 性别=\女\ COUNT TO G 性别=\女\ ?B,G

***********FOUND**********COPY ★TO★ STG FOR 性别=\女\期)>1979

或 COPY ★TO★ STG FOR 性别=\女\

日期)

COPY STG FOR 性别=\女\出生日期)>1979 USE STG

***********FOUND**********INDEX ★ON★ 出生日期 TO SR INDEX 出生日期 TO SR LIST 姓名 OFF USE

SET TALK ON RETURN

55.题目:显示XS.DBF数据库中总分最大值学生的姓名和专业。该程序共有四处错误,找出并改正,使程序能正常运行。 SET TALK OFF CLEAR USE XS

***********FOUND**********STORE ★0★ TO X STORE \ STORE \

REPLACE ALL 总成绩 WITH 计算机+英语 GOTO TOP

***********FOUND**********DO ★WHILE★ .NOT. EOF() DO WHILE EOF() IF X<总成绩 X=总成绩 Y=姓名 Z=专业 ENDIF

***********FOUND**********SKIP LOOP ENDDO

***********FOUND**********?Y,Z LIST Z,X,Y USE

56.题目:将XS.DBF数据库中82年以前出生的女生加上删除标记,并显示该类学生的专业、姓名;按总分降序输出XS.DBF数据库中的专业、姓名。该程序共有四处错误,找出并改正,使程序能正常运行。 SET TALK OFF USE XS

DELE FOR 出生日期<{82/01/01}.AND.性别=\女\

***********FOUND**********COPY ★TO★ SR FOR ★DELETE() COPY SR FOR DELETE() SELE B USE SR

LIST 专业,姓名 OFF SELE A

REPLACE ALL 计算机 WITH 英语+计算机

***********FOUND**********INDEX ★ON★ -(英语+计算机) TO CJ

或 INDEX ★ON★ -总成绩 TO CJ

INDEX -总成绩 TO CJ I=5

DO WHILE I>=1

DISP 姓名,总成绩 OFF ***********FOUND**********SKIP LOOP

***********FOUND**********I=I-1 或 I=-1+I I=I+1 ENDDO USE RETURN

57.题目:从键盘输入学生姓名对库文件XS.DBF进行查询。该程序共有四处错误,找出并改正使程序正常运行。 SET TALK OFF CLEAR USE XS

DO WHILE .T.

***********FOUND**********ACCEPT \请输入学生姓名:\ NAME ACCEPT \请输入学生姓名: \

***********FOUND**********LOCA ★FOR★ 姓名=NAME LOCA 姓名=NAME IF EOF()

WAIT \无此人!\ ELSE

***********FOUND**********DISP EXIT ENDIF

WAIT \继续查询吗?(Y/N) \

***********FOUND**********IF UPPER(CX)★<>★\或 IF UPPER(CX)★=★\ IF UPPER(CX)= \ EXIT ENDIF ENDDO USE RETURN

58.题目:在XS.DBF库中找到\李红\同学的记录,显示计算机成绩。该程序有4处错误,请找出并改正,使程序能够正常运行。 CLEAR

SET TALK OFF USE XS

***********FOUND**********DO ★WHILE★ .NOT. EOF() DO WHILE EOF()

***********FOUND**********IF 姓名=★\\或 IF 姓名=★[李红] 或 IF 姓名=★'李红'

IF 姓名=李红

***********FOUND**********DISP 姓名,计算机 LIST 姓名,计算机 ENDIF ***********FOUND**********SKIP LOOP

ENDDO USE

SET TALK ON RETURN

59.题目:在数据库XS.DBF中,统计、显示非党员人数。该程序共有四处错误,找出并改正,使程序能够正确运行。 SET TALK OFF CLEAR

***********FOUND**********A=0 A=1 USE XS

***********FOUND**********DO ★WHILE★ .NOT. EOF() DO WHILE EOF() IF NOT 入党否 A=A+1 ENDIF

***********FOUND**********SKIP COUNTINE

***********FOUND**********ENDDO END ?A USE

SET TALK ON RETURN

60.题目:输出如下图形 * * * * * * * * * * * * * * * *

该程序有四处错误,请找到错误并改正,使之能正确运行。 CLEA R=1 C=10

***********FOUND**********DO ★WHILE★ 4>=R 或 DO ★WHILE★ R<=4 DO WHILE R<4 S=1

***********FOUND**********DO ★WHILE★ S<2★*★R-1 或 DO ★WHILE★ S<-1+2★*★R

或 DO ★WHILE★ 2★*★R-1>S 或 DO ★WHILE★ -1+2★*★R>S

DO WHILE S<=2R-1

***********FOUND**********@R,C ★SAY ★\ @R,C ★SAY [*] 或 @R,C ★SAY ★'*' @R,C GET * C=C+1

***********FOUND**********S=S★+★1 S=S-1

ENDDO C=10-R R=R+1 ENDDO

61.题目:输出如下乘法口诀表,该程序有4处错误,请找出并改正,使程序能够正常运行。 1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9 ……………………

1*9=9 2*9=18 ……… 9*9=81 SET TALK OFF CLEAR

***********FOUND**********X=1 X=0

***********FOUND**********DO ★WHILE★ X<=9 DO WHILE X<=10 Y=1

DO WHILE Y<=X

***********FOUND**********??STR(Y,1)+★\ ??STR(Y,1)+*+STR(X,1)+ \ Y=Y+1 ENDDO X=X+1

***********FOUND**********? DISP ENDDO

62.题目:下面是一个关于光带式菜单的程序,根据题意,将题中四处错改正过来,请改正之. SET TALK OFF SET PROC TO PRO DO WHILE .T. CLEA

@3,19 SAY \北华大学学生管理系统\ @4,4 PROM \查询\查询记录\ @4,14 PROM \修改\修改记录\ @4,24 PROM \删除\删除记录\ @4,34 PROM \退出\返回\

***********FOUND**********SET★MESS★TO★20 READ MESS TO 20

***********FOUND**********ME★NU TO★W MENU INTO W DO CASE CASE W=1 DO CX CASE W=2

DO XG CASE W=3 DO SC

***********FOUND**********CASE★W=4 CASE W=0 EXIT ENDC ENDD

***********FOUND**********SET PROC★TO SET PROC ON SET TALK ON

63.题目:程序功能为添加数据记录,程序中有四处错误请修改正确. set talk off use djks copy to bbb use bbb

store \ store \ store \ store 0 to nl store \ store 0 to bs store 0 to sj store .t. to lp do while lp clear

@ 3,30 say \请输入记录项的数据!\

***********FOUND**********@ 6,20 say \考号:\ @ 6,20 say \考号:\ @ 6,50 say \姓名:\ @ 7,20 say \性别:\ @ 7,50 say \年龄:\ @ 8,20 say \考场:\ @ 8,50 say \笔试:\ @ 9,20 say \上机:\ read

***********FOUND**********append★blank append from

replace 考号 with kh,姓名 with xm,性别 with xb, 年龄 with nl,考场;

with kc,笔试 with bs,上机 with sj wait \是否继续添加?(Y/N)\

***********FOUND**********if rep=\ if★upper★(rep)=\ if rep=\

loop endif

***********FOUND**********store .f. to lp 或 store★.f.★to★lp store .t. to lp enddo clear

@ 10,30 say \再见!\ use

set talk on

64.题目:按姓名或专业查找任一学生,该程序有4处错误,请找出并改正,使程序能够正常运行。 SET TALK OFF CLEAR USE XS

DO WHILE .T.

ACCEPT \请选择:1.姓名 2.专业\ IF XZ=\

ACCEPT \请输入要查找的姓名:\

***********FOUND**********LOCATE★FOR★姓名=★XM LOCATE FOR 姓名= [XM] ELSE

IF XZ=\

***********FOUND**********ACCEPT★\ ACCEPT \请输入要查找的专业:\ ***********FOUND**********LOCATE★FOR★专业=ZC LOCATE FOR 职称=ZC ELSE

WAIT \选择错,按任意键继续\ ENDIF ENDIF

IF .NOT.EOF() DISPLAY ENDIF

WAIT \还继续查找吗 ?\ IF UPPER(AW)<>\

***********FOUND**********EXIT LOOP ENDIF ENDDO USE

SET TALK ON

65.题目:从键盘输入人名,在XS库文件中查找该人,如找到改动其专业,否则结束程序,该程序有4处错误,请找出并改正,使程序能够正常运行。 CLEAR

USE XS

NAME=SPACE(8)

ACCEPT \请输入要改动学生的姓名: \ LOCAT FOR 姓名=NAME

***********FOUND**********IF ★EOF() 或 IF .NOT. ★FOUND() IF NOT BOF()

@12,10 SAY \无此人\ USE

***********FOUND**********RETURN EXIT ENDIF

***********FOUND**********@15,10 SAY NAME ★GET 专业 @15,10 SAY NAME TO 专业 READ

***********FOUND**********USE CLOSE ALL

66.题目:将XS.DBF数据库中所有男同学依次显示出来。该程序有4处错误,请找出并改正,使程序能够正常运行。 SET TALK OFF USE XS

***********FOUND**********DO ★WHILE★ .NOT.EOF() DO WHILE EOF()

IF .NOT.性别=\男\ SKIP

***********FOUND**********LOOP EXIT ENDIF

DISPLAY OFF 姓名

***********FOUND**********SKIP LOOP

***********FOUND**********ENDDO END LOOP USE

SET TALK ON RETURN

67.题目:本程序的功能是输入学号查询考生计算机成绩。在程序中有4处错误请找出错误语句并改正,使程序正常运行。 USE XS

***********FOUND**********INDEX ★ON 学号 TO ★IS1 INDEX 学号 TO A1

***********FOUND**********ACCEPT \请输入学号:\★TO NUM ACCEPT \请输入学号: \ SEEK NUM

***********FOUND**********IF FOUND() 或 IF .NOT. EOF()

IF EOF()

?姓名, \计算机成绩: \计算机,3,0) ***********FOUND**********ELSE DISP

? \没有此考生! \ ENDIF USE

68.题目:给定程序的功能是:由用户输入数据库名,如果数据库的名等于xs.DBF显示记录号为奇数的记录内容,否则退出. Set talk off clear

name=space(8)

***********FOUND**********@2,5 say \请输入数据库名:\ @2,5 say \请输入数据库名:\ read

if name=\

***********FOUND**********use★&name 或 use★(name) use name

do while .not.eof()

***********FOUND**********skip★2 disp skip enddo else

***********FOUND**********retu 或 canc 或 quit exit endif retu

69.题目:显示数据库文件XS.DBF中化学系同学的姓名和计算机成绩该程序有4处错误,请找出并改正,使程序能够正常运行。 USE XS

***********FOUND**********DO ★WHILE★ .NOT.★EOF() DO WHILE NOT BOF() IF 专业<>\化学\ SKIP

***********FOUND**********LOOP EXIT ENDIF

***********FOUND**********DISPLAY★ 姓名,计算机 DISP SKIP ENDDO

***********FOUND**********USE CLOSE XS

本文来源:https://www.bwwdw.com/article/6ato.html

Top