当前位置:文档之家› 程序改错69题答案

程序改错69题答案

程序改错69题答案
程序改错69题答案

三、程序改错

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

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)+"×"+STR(Y)+"="+STR(X*Y)

**********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="Y"

DO WHILE UPPER(YN)="Y"

INPUT "请输入2位以内的整数" TO N

STORE 0 TO X,Y

Z=" "

DO WHILE X

X=X+1

IF INT(X/2)=X/2

**********FOUND**********LOOP

EXIT

ELSE

Z=Z+"+"+STR(X,2)

**********FOUND**********Y=X+Y 或Y=★Y+X

Y=Y+Z

ENDIF

ENDDO

?Z+"="+STR(Y,4)

WAIT "继续计算?(Y/N)" TO YN

ENDDO

?"再见:"

SET TALK ON

RETURN

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

SET TALK OFF

USE RS

COPY TO LSH

USE LSH

ZAP

I=0

ANS="Y"

**********FOUND**********DO ★WHILE ★UPPER(ANS)★= "Y"

或 DO ★WHILE ★LOWER(ANS)★='y' 或DO ★WHILE★ ANS="Y DO WHILE ANS="N" OR "n"

CLEAR

I=I+1

@10,1 SAY"请输入第"+STR(I,1)+"添加记录的数据"

APPE BLANK

@11,1 SAY "编号:" GET BH

@12,1 SAY "姓名:" GET XM

@13,1 SAY "性别:" GET XB

@14,1 SAY "出生年月:" GET CS

@15,1 SAY "婚否:" GET HF

@16,1 SAY "职称:" GET ZC

@17,1 SAY "工资:" GET GZ

READ

WAIT"是否正确?(Y/N)" TO ANS

IF UPPER(ANS)<>"Y"

I=I-1

ANS="Y"

LOOP

ENDIF

WAIT "是否继续添加?(Y/N)" TO ANS

ENDDO

USE RS

**********FOUND**********APPEND ★FROM

APPE LSH

CLEAR

USE

SET TALK ON

RETURN

5.题目:根据输入的编号查找RS数据库中的工资。

SET TALK OFF

USE RS

YN="Y"

DO WHILE UPPER(YN)="Y"

CLEAR

**********FOUND**********ACCEPT "请输入4位编号" TO NUM WAIT "请输入4位编号" TO NUM

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)" TO YN

ENDDO

USE

RETURN

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

INPUT"请第一个数的值:" TO A

INPUT"请第二个数的值:" TO B

INPUT"请第三个数的值:" TO C

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 "1:显示教授库信息"

@ 11,40 SAY "2:显示副教授库信息"

@ 12,40 SAY "3:显示讲师库信息"

@ 13,40 SAY "4:显示助教库信息"

**********FOUND**********@ 14,40 ★SAY★ "5:退出"

@ 14,40 READ "5:退出"

ACCEPT "请输入要显示的职称库" TO ANS

CLEAR

DO CASE

**********FOUND**********CASE ANS=★"1"

CASE ANS=1

USE JS

LIST

CASE ANS="2"

USE FJS

LIST

CASE ANS="3"

USE JSHI

LIST

CASE ANS="4"

USE ZJ

LIST

CASE ANS="5"

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

MAXGZ=GZ

ENDIF

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**********LO CATE★ 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 "请输入要查询的职工姓名:" TO NAME

LOCATE FOR XM = NAME

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

IF BOF ( )

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

ELSE

DISPLAY

ENDIF

WAIT "继续查询吗?(Y / N)" TO CX

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

?"s=",s

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

?"s=",s

set talk on

return

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

set talk off

clear

input "请输入英语成绩(1--100):" to n

i=1

store n to min,max

do while i<10

input "请输入英语成绩(1--100):" to m

do case

case m<0 .or. m>100

?"输入成绩有错,重新输入!"

**********FOUND**********loop

skip

case max

max=m

case min>m

**********FOUND**********min★=m

min=n

endcase

i=i+1

enddo

?"最高英语成绩:",max

?"最低英语成绩:",min

set talk on

return

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

SET TALK OFF

CLEAR

**********FOUND**********INPUT "请输入一个大于1的自然数:" TO N

ACCEPT "请输入一个大于1的自然数:" TO N

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

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 "请输入一段字符:" GET AA

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

?"包含英文字母的个数是:"+STR(M)

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

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.

?" 1-插入记录 2-修改记录 3-显示记录"

?" 4-逻辑删除 5-恢复记录 0-结束程序"

INPUT "请选择(1,2,3,4,5,0):" TO ANS

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

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

或IF ★0

或IF ★0=ANS★

IF ANS>0.OR.ANS<=5

INPUT "请输入记录号:" TO JLH

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 "请输入要修改的记录号:" TO JLH

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

GO &JLH

@4,1 SAY "计算机成绩:" GET 计算机

@6,1 SAY "英语成绩:" GET 英语

@8,1 SAY "奖学金:" GET 奖学金

**********FOUND**********READ

ACCEPT

ANS="Y"

@10,10 SAY "继续修改吗(Y/N)?" GET ANS PICT "Y"

READ

IF ANS<>"Y"

ENDIF

ENDDO

USE

RETURN

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

USE XSDB

DO WHILE .T.

ACCEPT "请输入学生姓名:" TO NAME

LOCATE FOR 姓名=NAME

IF .NOT. FOUND()

?"查无此人!"

ELSE

**********FOUND**********EDIT 或 BROWSE

DISP

ENDIF

WAIT "继续查找吗(Y/N)?" TO GOON

**********FOUND**********IF UPPER(GOON)="Y" 或 LOWER(GOON)="y"

IF GOON="Y"

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

ENDDO

**********FOUND**********?"200到300之间的所有能被3整除或被5整除的数之和="+★STR(S)

?"200到300之间的所有能被3整除或被5整除的数之和="+S

?"200到300之间的所有能被3整除或被5整除的数的个数="+STR(C)

SET TALK ON

RETURN

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

INPUT "请输入第一个数:" TO X

STORE X TO MA, MI

N=5

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

DO WHILE N>=5

INPUT "请输入下一个数:" TO X

IF MA

MA=X

ENDIF

IF MI>X

MI=X

ENDIF

N=N-1

ENDDO

**********FOUND**********?"最大数:"+★STR(MA,3),"最小数:"+★STR(MI,3)

?"最大数:"+SUBS(MA,3),"最小数:"+SUBS(MI,3)

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

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 "请输入一个整数:" TO N

**********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年

以后出生的女生记录拷贝到GIRL.DBF新库中,按出生日期的升序显示新库的姓名字段。SET TALK OFF

CLEAR

USE XSDB

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

**********FOUND**********COUNT★ TO B FOR 性别="男".AND.&TJ

COUNT TO B 性别="男".AND.TJ

COUNT TO G for 性别="女".AND.&TJ

?B,G

COPY TO GIRL FOR 性别="女".AND.YEAR(生年月日)>1979

USE GIRL

**********FOUND**********INDEX★ ON 生年月日 TO SR

INDEX TO 生年月日 INTO SR

LIST 姓名 OFF

USE

SET TALK ON

31.题目:找出XSDB数据库中计算机和英语的总分最高的学生姓名、所在院系和总分。SET TALK OFF

CLEAR

USE XSDB

STORE 0 TO ZF

DO WHILE .NOT.EOF()

**********FOUND**********IF 英语+计算机>ZF 或 IF 计算机+英语>ZF

或IF ZF★<英语+计算机或IF ZF★<计算机+英语

IF ZF>"英语+计算机"

ZF=英语+计算机

XM=姓名

XB=系别

ENDIF

**********FOUND**********SKIP

LOOP

ENDDO

?XM,XB,ZF

USE

SET TALK ON

RETURN

32.题目:对XSDB.DBF库文件中任意学生更改其所在的系别。

CLEAR

USE XSDB

NAME=SPACE(6)

ACCEPT "请输入要更改学生的姓名:" TO NAME

LOCAT FOR 姓名=NAME

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

IF .NOT.EOF()

@12,10 SAY "无此学生!"

WAIT "按任意键结束!"

ELSE

**********FOUND**********@15,10 SAY ★NAME★ GET★ 系别

@15,10 SAY &NAME TO 系别

READ

ENDIF

USE

RETURN

33.题目:计算3!+5!+7!之和。

SET TALK OFF

CLEAR

S=0

I=1

J=3

DO WHILE I<=3

STORE 1 TO K,P

**********FOUND**********DO ★WHILE★ KK

DO WHILE P<=J

P=P*K

K=K+1

ENDDO

S=S+P

**********FOUND**********J=2+J 或J=J+★2

J=J+1

I=I+1

ENDDO

? "3!+5!+7!=",S

SET TALK ON

34.题目:有选择的删除XSDB.DBF中记录程序,循环显示和逻辑删除记录,直到在"是否继续删除(Y/N)?"提示下,键入非"Y"的其它键时才跳出循环,所有逻辑删除的记录在程序运行结束前真正删除。

CLEAR

USE XSDB

INDEX ON 学号 TO XH

YN="Y"

DO WHILE UPPER(YN)="Y"

ACCEPT "输入删除学生的学号:" TO XH

**********FOUND**********FIND &XH 或 SEEK ★XH

LOCATE &XH

IF .NOT.EOF()

DISP

WAIT "是否要删除该记录(Y/N)?" TO YN

IF UPPER(YN)="Y"

DELETE

ENDIF

ELSE

?"无此学生!"

ENDIF

WAIT "是否继续删除(Y/N)?" TO YN

ENDDO

**********FOUND**********PACK

ZAP

USE

35.题目:输入一个字符,判别它是否大写字母,如果是,则显示该字符,否则将它转换成大写字母再显示。(A的ASCII码值为65,a的ASCII码值为97)

CLEAR

SET TALK OFF

ACCEPT "请输入一个字符:" TO CH

K=ASC(CH)

**********FOUND**********IF ★K>=65★.AND.★K<=90 或 I F ★K>=65★.AND.★90>=k

或IF ★65<=K★.AND.★K<=90 或 IF ★65<=k★.AND.★90>=k IF K>=65.OR.K<=90

?CH+"是大写字母!"

ELSE

?CH+"是小写字母!"

**********FOUND**********L=K-32 或 L=-32+k

L=K+32

?CH+"为大写字母是:"+CHR(L)

ENDIF

SET TALK ON

36.题目:查询XSDB.DBF数据库中奖学金超过给定数值的奖学金金额程序。

SET TALK OFF

CLEAR

USE XSDB

***************FOUND*****************JXJ=★0

JXJ =" "

@10,30 SAY"请输入奖学金:" GET JXJ

READ

DO WHILE .NOT.EOF()

IF 奖学金>JXJ

DISP 奖学金

ENDIF

***************FOUND*****************SKIP

CONTINUE

ENDDO

USE

SET TALK ON

37.题目:以下程序的功能如下:用两重循环计算12+22+32+42+……+N2的值并显示输出结果。SET TALK OFF

S=0

I=1

INPUT "N=" TO N

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

DO WHILE I>N

K=1

J=1

DO WHILE J<=I

K=K*I

J=J+1

ENDDO

**********FOUND**********S=K+S 或S=S+★K

S=S+J

I=I+1

ENDDO

?S

SET TALK ON

38.题目:将1到100之间能被3或5整除的所有数及其个数显示出来。

SET TALK OFF

N=0

I=1

YN=.T.

DO WHILE YN

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

或IF ★MOD(I,3)=0★.OR.★MOD(I,5)=0

或IF ★I%3=0 ★OR★ I%5=0

IF INT(I/3)=INT(I/5)=0

N=N+1

??I

ENDIF

I=I+1

**********FOUND**********IF I>100 或 IF 100

IF I<=100

EXIT

ENDIF

ENDDO

?N

SET TALK ON

39.题目:查找XSDB.DBF中计算机和英语总分最高的学生的姓名和系别并显示。

SET TALK OFF

YN="Y"

M=0

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

DO WHILE FOUND()

Z=计算机+英语

**********FOUND**********IF MM

IF M>=Z

M=Z

N=姓名

X=系别

ENDIF

SKIP

ENDDO

?N,X

USE

SET TALK ON

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

USE XSDB

DO WHILE .NOT.EOF()

CLEAR

ACCEPT "请输入要修改的学号:" TO XH

**********FOUND**********★LOCATE★ FOR学号=XH

GO XH

@4,1 SAY "计算机成绩:" GET 计算机

@6,1 SAY "英语成绩:" GET 英语

@8,1 SAY "奖学金:" GET 奖学金

READ

ANS="Y"

@10,10 SAY "继续修改吗(Y/N)?" GET ANS

READ

**********FOUND**********IF UPPER(ANS)= "N"

IF ANS="N"

EXIT

ENDIF

ENDDO

USE

RETURN

41.题目:按屏幕定义格式向数据库XSDB.DBF数据库添加记录。

USE XSDB

ANS="y"

DO WHILE ANS='y'

CLEA

**********FOUND**********APPEND★ BLANK

计算机程序改错题,及答案

11 *程序名:TEST.prg *检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的 *学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中. *以下程序有三处错误,请改正 OPEN DA TABASE SDB SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数; FROM STUDENT,SC; WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error********** GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error********** inTO table NEW_TEST &&**********Error********** CLOSE ALL 9 *程序名:dbtest3.prg *定义一个视图VS1, *检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号, *并按平均成绩降序排序. *以下程序有三处错误,请改正 SET TALK OFF SET SAFETY OFF open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行 CREATE VIEW VS1 SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号; FROM STUDENT2, sc; &&*************Error************* WHERE STUDENT2.学号= SC.学号; GROUP BY SC.学号HA VING COUNT(课程号) > 3; ORDER BY 平均成绩desc &&*************Error************* CLOSE DATABASE RETURN i=2 create table four(结果I) do while i<=1000 if i%3=0 insert into four values(i) &&错误语句请修改 endif

最新二级C语言考试题库及答案程序改错专项练习 精华版

1 / 4 程序改错题(共15题) 1、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中所有元素的平均值,结果保留两位小数。 例如,当一维数组a 中的元素为:10,4,2,7,3,12,5,34,5,9 程序的输出应为:The aver is: 9.10 。 #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9},i; int aver,s; s = 0; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最大值和最小值。 例如,当二维数组a 中的元素为: 4 4 34 37 3 12 5 6 5 程序的输出应为:The max is: 37 The min is: 3 。 #include #include void main() { int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; max = min = a[0][0]; for ( i=0; i<3; i++) for ( j=1; j<3; j++) { if ( max < a[i][j] ) max = a[i][j]; /************found************/ if (min < a[i][j]) min = a[i][j]; } printf("The max is: %d\n", max); printf("The min is: %d\n", min); } 3、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中的最大元素及其下标。 例如,当一维数组a 中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is: 7 。 #include #include void main() { int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0; for ( i=1; i<10; i++) /************found************/ if (max > a[i]) { max = a[i]; /************found************/ i = pos; } printf("The max is: %d ,pos is: %d\n", max , pos); } 4、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最小值。 例如,当二维数组a 中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5},i,j,min; min = a[0][0]; for ( i=1; i<3; i++) for ( j=0; j<3; j++) if (min > a[i][j]) { /************found************/ min == a[i][j]; } printf("The min is: %d\n", min); }

程序改错基本题

程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; }

main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

程序改错1

第1题(10.0分)题号:421 /*-------------------------------- 【程序改错】 -------------------------------- 功能:给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 --------------------------------*/ #include"stdio.h" main( ) { /**********FOUND**********/ long a,b,c,d,e,x, scanf("%ld",&x); a=x/10000; /**********FOUND**********/ b=x/10000/1000; c=x%1000/100; d=x%100/10; e=x%10; /**********FOUND**********/ if (a==0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); getch(); } 答案: 1). long a,b,c,d,e,x; 2). b=x%10000/1000; 3). if (a!=0) 或 if (!a) 第2题(10.0分)题号:417 /*-------------------------------- 【程序改错】 -------------------------------- 功能:下题是一段有关结构体变量传递的程序. --------------------------------*/ #include "stdio.h" struct student { int x; char c; } a; main() { a.x=3; /**********FOUND**********/ a.c='a' f(a); /**********FOUND**********/ printf("%d,%c",a.x,b.c); getch(); } f(struct student b) { b.x=20; /**********FOUND**********/ b.c=y; } 答案: 1). a.c='a'; 2). printf("%d,%c",a.x,a.c); 3). b.c='y'; 第1题(10.0分)题号:440 /*-------------------------------- 【程序改错】 --------------------------------

2012计算机国二C语言等级考试题库(内部资料)程序改错

1.给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。(1)“t=0;”改为“t=1;”。(2)改成“return(2*s);” 2.给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:7654321时,t中的数为:7531。(1)“void fun (long s, long *t)”(2)“sl = sl*10;” 3.给定程序MODI1.C中函数fun的功能是:用下面的公式求π的近似值,知道最后一项的近似值小于指定数(参数num)为止:例如程序0.0001,则程序输出 3.1414。(1) “while(t>=num)”改为 “while(fabs(t)>=num) ”。(2)“t=s%n;”改为 “t=s/n;”。 4.给定程序MODI1.C中函 数fun的功能是:把主函 数中输入的三个数,最大 的放在a中,最小的放在 c中,中间的放在b中。 例如a=55.0 b=34.0 c=12.0。(1)“float k;”。 (2)“if(*a<*c)”。 5. 给定程序MODI1.C中 函数fun的功能是:为一 个偶数寻找两个素数,这 两个素数之和等于该偶 数,并将这两个素数通过 形参指针传回主函数。(1) “y=1;”。(2)“d=a-i;”。 6. 给定程序MODI1.C中 函数fun的功能是:由形 参给定n个实数,输出平 均值以上(含平均值)的 实数个数。所的平均值为: 195.838745,在平均值以 上的实数个数应为:5。(1) “int j, c=0; double xa=0.0;”。(2)“if (x[j]>=xa)”。 7.例如:当s中的数为: 7654321时,t中的数为: 7531。(1)“*t=0;”(2) “if(d%2!=0)” 8.函数功能是:求出 以下分数序列的前n项 和。 2/1,3/2,5/3,8/5/13/ 8,21/13,…...。和值 通过函数值返回到 main函数。例如,n=5, 则应输出:8.391667。 (1)“fun(int n)”改为 “double fun(int n)”。 (2)“b+=c;”改为“b=c;”。 9.函数fun的功能是: 判断一个整数是否是 素数,若是返回1,否 则返回0。(1)“k++” 改为“k++;”(2) “if(m=k)”改为 “if(m==k)” 10.给定程序MODI1.C 中函数fun的功能是: 从整数1到55之间,选 出能被3整除、且有一 位上的数是5的那些 事,并且把这些数放 在b所指的数组中,这 些数作为函数值返回。 规定,函数中a1放个 位数,a2放十位数。 (1)“a2=k/10;”。(2) “return i;”。 11.给定程序MODI1.C 中函数fun的功能是: 计算小于形参k的最大 的10个能被13或17整 除的自然数之和。K的 值由主函数传入,若K 的值为500.则主函数 为4622。(1) “if((k%13==0)||(k%17 ==0))”。(2)“______” 填“}”。 12.已知一个数列从第 0项开始的前三项分别 是0、0、1以后的各项 都是它相邻的前三项 之和。给定程序 MODI1.C中函数fun的 功能是:计算并输出该 数列前n项的平方根之 和。n的值通过形参传 入。(1)“double fun(int n)”。(2)“return sum;”。 13.函数fun的功能是: 根据整形形参m的值: 计算如下公式的 值……例如:若m中的 值为5,则应输出: 0.536389。(1) “for(i=2; i<=m; i++)”(2) “y-=1.0/(i*i);”。 14.函数的功能是:将 字符串中的字符按逆 序输出,但不改变字符 串中的内容。例如字符 串abcd,则应输出dcba。 (1)“void fun(char *a)”。(2)“printf("%c", *a);”。 15.函数fun的功能是:求 三个数的最小公倍数。 X1=15 x2=11 x3=2(1) 改成“int fun(int x, int y, int z )”。(2)return j 16.函数fun的功能是:根 据整型形参m计算如下 公式的值。若主函数中输 入5,则应输出-0.283333。 (1)“t=t-1.0/i;”。 (2)填空“return t;” 17. 例如,若输入:edcba, 则应输出:abcde。(1) “for( i=strlen( t )-1; i; i- - )” (2)“if(t[j]>t[j+1])” 18.函数fun的功能是: 根据形参m的值 (2<=m<=9),在m行m 列的二维数组中存放 如下所示规律的数据, 由main函数输出。(1) “void fun(int a[][M], int m)”。(2) “a[j][k]=(k+1)*(j+1);”。 19.函数fun的功能是: 先从键盘上输入一个3 行3列矩阵的各个元素

C语言程序改错题

第1题【程序改错】 欧阳学文 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “EDCBAABCDE”。 */ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

/**********FOUND**********/ t[i] = s[sli]; for (i=0; i

第2题【程序改错】 功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13 …… 例如:若n = 5,则应输出:8.391667。 */ #include #include /**********FOUND**********/ fun ( int n ) { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /**********FOUND**********/ s = (double)a / b;

程序改错包括答案版本.docx

12592 '题目 : 编程求一个十进制整数n 的各位数字之和,设n 为小于或等于 5 位的数。'------------------------------------------------ Option Explicit Private Sub Form_Click() Dim N As Integer, Sum As Integer, S1 As String, S2 As String Dim i As Integer, Ch As String Sum = 0 N = InputBox(" 输入整数n") S1 = Str(N) S1 = Trim(S1) For i = 1 To Len(S1) '**********ERROR********** Ch = Mid(N, i, 1) '**********ERROR********** Sum = Val(Ch) Next i Print " 该整数的各位数之和是: "; Sum End Sub 答案: Ch=Mid(S1 , i , 1) Sum = Sum + Val(Ch) 12610'题目:程序功能根据输入的学习成绩, 分别显示优秀 (90 分以上 ), 良好 (75 分以上 ), 及格 (60 分以上 )不及格四个等级 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer i = InputBox(" 请输入学习成绩") Select Case i '**********ERROR********** Case 0 < i < 100 MsgBox " 成绩应该在0--100 之间 """ '**********ERROR********** Case 90 Print " 优秀 " Case 75 To 89 Print " 良好 " Case 60 To 74 Print " 及格 " '**********ERROR********** Case MsgBox " 不及格 ", vbCritical End Select End Sub 答案: Case 100 < x or x < 0 Case 90 to 100 Case Else 12616.题目:求 s=1!+3!+5!+7! ,阶乘的计算用Function 过程 fact 实现 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim i As Integer, s As Integer '**********ERROR********** For i = 1 To 7 s = s + fact(i) Next i Print s End Sub '**********ERROR********** Public Function fact() Dim t As Integer, i As Integer t = 1 For i = 1 To n t = t * i Next i '**********ERROR********** fact = i End Function 答案: For i = 1 To 7 Step 2 Public Function fact%(n%) fact = t 12620 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。 '------------------------------------------------ Option Explicit Private Sub HScroll1_Scroll() '**********ERROR********** Timer1.Interval = HScroll1.Min - HScroll1.Value End Sub Private Sub Timer1_Timer() '**********ERROR********** If Label1.Left <= Form1.Width Then '**********ERROR**********

C语言程序改错基本题库电子版本

C语言程序改错基本 题库

北京石油化工学院 12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求 3+4 int a=3,b=4;

main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (i = j+1;i < n; i++) /**********ERROR**********/ if(a[i] >a[k]) /**********ERROR**********/ k=j; t = a[k] ; a[k] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 【参考答案】 k = j; 【参考答案】 if(a[i] < a[k]) if(a[k] > a[i])

【参考答案】 k = i; (二)功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,…… 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 #include "conio.h" #include "stdio.h" long fun ( int n ) { long a=1, b=1, c=1, d=1, k; /**********ERROR**********/ for (k=4; k

计算机基础C++程序改错复习题

? 第1题(分)题号:400 难度:中第2章/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ 《 #define N 20 #include <> int fun(int m) { /**********FOUND**********/ int s=0,i; ; for(i=1;i

s*=i; ) 第2题(分)题号:584 难度:中第1章/*-------------------------------------------------------【程序改错】 --------------------------------------------------------- 下列给定程序中函数fun()的功能是计算1/n!的值。 & 例如:给n输入5,则输出。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。 , 试题程序: -------------------------------------------------------*/ #include <> #include <> /***********FOUND***********/ ~ int fun(int n) { double result =; if(n==0) return ; while(n>1 && n <170) /***********FOUND***********/ result *=n++ ; … result=1/result; return result; } void main() {

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

有目录-程序改错部分试题及答案(2015-2016-1)

目录 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 (1) 功能:求如下表达式: (2) 功能:判断m是否为素数,若是返回1,否则返回0。 (4) 功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 (5) 功能:求1到20的阶乘的和。 (6) 功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出 整数部分,输出项数不得多于或少于20。 (7) 功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的 元素之和sum。 (8) 功能:找出大于m的最小素数,并将其作为函数值返回。 (9) 功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前 面的元素即第一个数对换位置. (10) 功能:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将 它插入数组中. (11) 第1题/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 ------------------------------------------------------*/ #include #define N 11 main() { int i,number,a[N]={1,2,4,6,8,9,12,15,149,156}; printf("please enter an integer to insert in the array:\n"); /**********FOUND**********/ scanf("%d",&number) printf("The original array:\n"); for(i=0;i

齐齐哈尔大学C语言题库 程序改错(部分)

1.【程序改错】 题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) int fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} *b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i

程序改错--答案版

12592 '题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。'------------------------------------------------ Option Explicit Private Sub Form_Click() Dim N As Integer, Sum As Integer, S1 As String, S2 As String Dim i As Integer, Ch As String Sum = 0 N = InputBox("输入整数n") S1 = Str(N) S1 = Trim(S1) For i = 1 To Len(S1) '**********ERROR********** Ch = Mid(N, i, 1) '**********ERROR********** Sum = Val(Ch) Next i Print "该整数的各位数之和是:"; Sum End Sub 12610'题目:程序功能根据输入的学习成绩,分别显示优秀(90分以上), 良好(75分以上),及格(60分以上)不及格四个等级. '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer i = InputBox("请输入学习成绩") Select Case i '**********ERROR********** Case 0 < i < 100 MsgBox "成绩应该在0--100之间""" '**********ERROR********** Case 90 Print "优秀" Case 75 To 89 Print "良好" Case 60 To 74 Print "及格" '**********ERROR********** Case MsgBox "不及格", vbCritical End Select End Sub 12616.题目:求s=1!+3!+5!+7!,阶乘的计算用Function过程fact实现. '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim i As Integer, s As Integer '**********ERROR********** For i = 1 To 7 s = s + fact(i) Next i Print s End Sub '**********ERROR********** Public Function fact() Dim t As Integer, i As Integer t = 1 For i = 1 To n t = t * i Next i '**********ERROR********** fact = i End Function 12620题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。 '------------------------------------------------ Option Explicit Private Sub HScroll1_Scroll() '**********ERROR********** Timer1.Interval = HScroll1.Min - HScroll1.Value End Sub Private Sub Timer1_Timer() '**********ERROR********** If Label1.Left <= Form1.Width Then '**********ERROR**********

相关主题
文本预览
相关文档 最新文档