程序调试题新.docx
《程序调试题新.docx》由会员分享,可在线阅读,更多相关《程序调试题新.docx(27页珍藏版)》请在冰点文库上搜索。
程序调试题新
程序调试题
一、填空
1)
SETTALKOFF
CLEAR
C=""
FORI=1TO3&&——1
ACCEPTC+"请输入口令:
"TOPSW
IFPSW=="MANAGER"&&——2
?
"欢迎使用本系统!
"
EXIT&&——3
ENDIF
C="口令输入错误,再试一次!
"
ENDFOR&&——4
IFI>3&&——5
?
"对不起,你无权使用本系统"
ENDIF
SETTALKON
2)
**本程序用于求解一元二次方程ax^2+bx+c=0
CLEARALL
**循环,条件恒真
DOWHILE.T.
CLEAR
INPUT"输入一元二次方程的二次项系数a(a不能为0)=?
"TOa
IFa=0
LOOP
ENDIF
INPUT"输入一元二次方程的一次项系数b=?
"TOb
INPUT"输入一元二次方程的常数项c=?
"TOc
**把判别式的运算结果保存到内存变量panbie中
STOREb*b-4*a*cTOpanbie
**显示一个空行
?
**判断判别结果是否小于0
IFpanbie<0
**若小于0显示无实数解
?
"无实数解!
"
ELSE
**判断判别结果是否等于0
IFpanbie=0
**若等于0,计算并显示两个相同的实数根
?
"有两个相等的实数根x1=x2=",-b/(2*a)
ELSE
**大于0时分别计算并显示两个不等的实数根
?
"有两个不等的实数根:
x1=",(-b+sqrt(panbie))/(2*a)&&_____1
?
"x2=",(-b-sqrt(panbie))/(2*a)&&______2
ENDIF
ENDIF
?
**等待从键盘输入单个字符,并保存到内存变量tuichu中
WAIT"Q=退出,其它键继续......"TOtuichu
**把用户输入的单字符先转换成大写,再与大写“Q”比较
IFUPPER(tuichu)="Q"&&_____3
**若tuichu中为“Q”,清屏、退出DOWHILE循环
CLEAR&&______4
EXIT&&______5
ENDIF
**返回到DOWHILE继续循环
ENDDO
**返回调用程序
RETURN
3)
**本程序按部门汇总分别求出奖金,工资,扣款的值,最后再写入临时表gzhz.dbf中
CLEARALL
SETSAFETYOFF
SETTALKOFF
USE工资表
**按部门
SORTON部门TOgzpx&&______1
USEgzpx
BROWSE
**把3个数值字段求和,并保存在内存变量中gz,jj,kk,为总计作准备
SUM工资,奖金扣款TOgz,jj,kk&&_________2
**按部门分类汇总,汇总结果为每个部门作为一条记录放入汇总表文件gzhz.dbf
TOTALON部门TOgzhz&&______3
**打开汇总表文件
USEgzhz&&______4
**尾部追加一条空记录,准备放总计
APPENDBLANK
**把准备好的总计值放入相应字段
REPLACE工资WITHgz,奖金WITHjj,扣款WITHkk&&_______5
BROWSE
**关闭打开的表文件
CLEARALL
ERASEgzpx.dbf
ERASEgz0.dbf
4)
SETTALKOFF
CLEAR
INPUT"N="TON
INPUT"A="TOA&&_______1
STOREATOX,Y
S=A
P=N-2
FORI=2TON
INPUT"B="TOB
S=S+B&&_______2
IFX
X=B&&_______3
ENDIF
IFY>B&&_______4
Y=B
ENDIF
ENDFOR
R=S-X-Y&&________5
R/P
SETTALKON
5)
SETTALKOFF
CLEAR
ACCE"P="TOP
L=LEN(P)&&-------------1
C=""
FORI=1TOL
A=SUBSTR(P,I,1)&&------------2
DOCASE
CASEA>="a"ANDA<="u"ORA>="A"ANDA<="U"
A=CHR(ASC(A)+5)&&------------3
CASEA>="v"ANDA<="z"ORA>="V"ANDA<="Z"
A=CHR(ASC(A)-21)&&------------4
ENDCASE
C=C+A&&--------------5
ENDFOR
P+"--->"+C
SETTALKON
6)
SETTALKOFF
SETESCAPEOFF
CLEAR
USE学生
"************按ESC键结束操作************"
DOWHILE.T.
ACCEPT"输入指定的班级(如:
951或953):
"TOBJ
LOCATEFORLEFT(学号,3)=BJ
IFFOUND()
SUM奖学金TOJXJFORLEFT(学号,3)=BJ
?
BJ+"班全体学生的奖学金总额为:
"+STR(JXJ,5,2)+",中文大写为:
"+JEZH(JXJ)
ELSE
?
"指定班级不存在!
"
ENDIF
IFINKEY(0)=27
EXIT
ENDIF
ENDDO
USE
SETTALKON
SETESCAPEON
FUNCTIONJEZH
PARAMETERSX
C1="零壹贰叁肆伍陆柒捌玖"
C2="分角元拾佰仟万拾佰仟亿"
M=ROUND(X,2)
M=M*100
I=0
C=SPACE(0)
DOWHILE.T.
N=MOD(M,10)&&1--------------------
P1=SUBSTR(C1,2*N+1,2)
P2=SUBSTR(C2,2*I+1,2)
C=P1+P2+C&&2-------------------
I=I+1
M=INT(M/10)&&3------------------
IFM=0
EXIT
ENDIF
ENDDO
RETURNC
ENDFUNC
7)
SETTALKOFF
DOWHILE.T.
CLEAR
ACCEPT"请输入表名(扩展名略):
"TOTBN
IFFILE("&TBN..DBF")
USE(TBN)&&_________1
ELSE
WAIT"指定的表不存在!
"TIMEOUT5
LOOP
ENDIF
"表中的全部字段名列表:
"
FORN=1TOFCOUNT()&&_________2
?
FIELDS(N)&&________3
ENDFOR
ACCEPT"请输入显示表信息的条件表达式:
"TOEXPR
BROWSEFOR&EXPR&&_________4
WAIT"是否还要显示其他表文件中的内容?
Y/N:
"TOYN
IFUPPER(YN)!
="Y"
EXIT&&_________5
ENDIF
ENDDO
USE
SETTALKON
8)
SETTALKOFF
CLEAR
USE学生
INDEXON学号TOINN0
"**********各班男女奖学金总额统计************"
"班级男同学奖学金总额女同学奖学金总额"
DOWHILENOTEOF()&&________1
CLASS=LEFT(学号,3)
STORE0TOBOYS,GIRLS&&________2
DOWHILELEFT(学号,3)=CLASS
IF性别&&________3
BOYS=BOYS+奖学金
ELSE
GIRLS=GIRLS+奖学金&&________4
ENDIF
SKIP&&_______5
ENDDO
?
CLASS+STR(BOYS,19,2)+STR(GIRLS,19,2)
ENDDO
USE
SETTALKON
9)
SETTALKOFF
CLEAR
INPUT"M="TOM
S=1&&______1
FORN=2TOM-1&&______2
IFM%N=0&&______3
S=S+N&&______4
ENDIF
ENDFOR
IFS=M&&______5
?
M,"是完数!
"
ELSE
?
M,"不是完数!
"
ENDIF
SETTALKON
10)
SETTALKOFF
CLEAR
INPUT"M="TOM
N=M
DOWHILEINT(N)<>N&&______1
N=N*10
ENDDO
STOREMOD(N,10)TOD,X&&______2
DOWHILEN>0&&_______3
R=MOD(N,10)&&______4
IFR>D
D=R
ENDIF
IFRX=R
ENDIF
N=INT(N/10)&&_______5
ENDDO
M,"中位值最大的数码是:
"+STR(D,1)+",最小的数码是:
"+STR(X,1)+"。
"
SETTALKON
11)
SETTALKOFF
CLEAR
INPUT"X="TOX&&________1
S=STR(X,5)+"="
P=0
FORI=2TOX
IFX%I=0&&_________2
P=1
S=S+STR(I,3)+"*"
X=X/I&&_________3
I=I-1
LOOP&&________4
ENDIF
ENDFOR
IFP=1&&__________5
?
LEFT(S,LEN(S)-1)
ELSE
?
STR(X,5)+"没有因子!
"
ENDIF
SETTALKON
12)
SETTALKOFF
CLEAR
USE成绩
ACCEPT"请输入学生的学号:
"TOXH
LOCATEFOR学号=XH&&__________1
IF!
FOUND()
?
"查无此人!
"
ELSE
AVERAGE成绩TOCJFOR学号=XH&&_________2
DOCASE
CASECJ>=90
DC="优"
CASECJ>=80
DC="良"
CASECJ>=70
DC="中"
CASECJ>=60
DC="及格"
OTHERWISE&&__________3
DC="不及格"
ENDCASE&&__________4
?
XH,CJ,DC
ENDIF&&_________5
USE
SETTALKON
13)
SETTALKOFF
CLEAR
INPUT"M="TOM
INPUT"N="TON
SM=M
DOJCWITHSM
SN=N
DOJCWITHSN
SMN=M-N
DOJCWITHSMN
CMN=N
DOMCWITHM,CMN
DOMCWITHM,M&&__________1
(SM+SN)/(SMN+CMN+M)
SETTALKON
PROCJC
PARAX&&__________2
T=1
FORI=1TOX
T=T*I
ENDFOR
X=T&&__________3
RETURN
PROCMC
PARAX,Y&&____________4
T=1
FORJ=1TOY
T=T*X
ENDFOR
Y=T&&_________5
RETURN
14)
SETTALKOFF
CLEAR
INPUT"M="TOM
INPUT"N="TON
X=M
DOJC
SM=X&&___________1
X=N
DOJC
SN=X
X=M-N
DOJC
SMN=X
Z=M
Y=N
DOMC
CMN=Y
Y=M
DOMC
CMM=Y&&_________2
(SM+SN)/((SMN+CMN+CMM)*M/N&&________3
SETTALKON
PROCJC
T=1
FORI=1TOX
T=T*I
ENDFOR
X=T&&_________4
RETURN
PROCMC
T=1
FORJ=1TOY
T=T*Z
ENDFOR
Y=T&&__________5
RETURN
15)
SETTALKOFF
CLEAR
INPUT"X="TOX
S=0
STORE1TOT1,T2,I
T3=-1
DOWHILEABS(T1/T2)>1E-5&&_________1
STORE1TOT1,T2
FORJ=1TO2*I-1
T1=T1*X&&_________2
T2=T2*J&&_________3
T3=-T3&&_________4
ENDFOR
S=S+T3*T1/T2&&________5
I=I+1
ENDDO
"SIN("+STR(X,6,4)+")="+LTRIM(STR(S,20,7))
SETTALKON
16)
SETTALKOFF
CLEAR
INPUT"M="TOM
S=0&&________1
FORI=MTO1STEP-1
IFSS(I)&&_______2
S=S+1
?
?
STR(I,5)
ENDIF
ENDFOR&&_______3
STR(S,5)
SETTALKON
FUNCSS
PARAX
FORJ=2TOX-1
IFINT(X/J)=X/J
EXIT&&_______4
ENDIF
ENDFOR
IFJ=X&&________5
RETURN.T.
ELSE
RETURN.F.
ENDIF
17)
SETTALKOFF
CLEAR
INPUT"A="TOA
INPUT"B="TOB
INPUT"C="TOC&&1
IFA>B&&2
T=A
A=B
B=T
ENDIF
IFA>C&&3
T=A
A=C
C=T
ENDIF
IFB>C&&4
T=B
B=C
C=T
ENDIF
A,B,C&&5
SETTALKON
18)
SETTALKOFF
CLEAR
INPUT"A="TOA
DOCASE
CASETYPE("A")="C"&&1
?
A,"是字符型数据。
"
CASETYPE("A")="N"&&2
?
A,"是数值型数据。
"
CASETYPE("A")="L"&&3
?
A,"是逻辑型数据。
"
CASETYPE("A")="D"&&4
?
A,"是日期型数据。
"
ENDCASE
SETTALKON
19)
SETTALKOFF
DOWHILE.T.&&1
CLEAR
ACCEPT"请输入要显示的表文件名(扩展名略):
"TOTN
NM=TN+".DBF"&&2
IFFILE(NM)
USE(TN)&&3
BROWSE
ELSE
?
"您所指定的表文件并不存在!
"
ENDIF
WAIT"是否还要查看其他表文件?
Y/N:
"TOYN
IFUPPER(YN)="Y"
LOOP&&4
ELSE
EXIT&&5
ENDIF
ENDDO
USE
SETTALKON
二、改错
20)
SETTALKOFF
SETESCAPEOFF
CLEAR
"按ESC键结束操作"
DOWHILE.T.
INPUT"M="TOM
IFINT(M)!
=MORABS(M)!
=M
?
"输入的数据不符合题目要求!
"
LOOP
ENDIF
?
ALLTRIM(STR(M,19))+"的质数因子有:
"
I=2
DOWHILEI<=M
IFM%I=0
?
?
STR(I,6)
****************************
M=MOD(M,I)&&改为M=INT(M/I)
LOOP
ENDIF
I=I+1
ENDDO
IFINKEY(0)=27
EXIT
ENDIF
ENDDO
SETTALKON
SETESCAPEON
21)
SETTALKOFF
STORE"伟大祖国"TOXY
CLEAR
N=1
DOWHILEN<8
?
SUBSTR(XY,N,2)
*****************
N=N+1&&改为N=N+2
ENDDO
SUBSTR(XY,5,4)
SUBSTR(XY,1,4)
RETURN
22)
SETTALKOFF
CLEAR
*****1*****
S=0&&改为S=1
STORE1TOT,N
DOWHILES<=1E+20
T=T*(N+1)*(N+2)
S=S+T
*****2*****
N=N+1&&改为N=N+2
ENDDO
"S=",S-T
"N=",N-2
SETTALKON
23)
SETTALKOFF
CLEAR
USE学生
*****1*****
FORN=1TORECCOUNT()&&改为FORN=1TOFCOUNT()
*****2*****
FOUND(N)&&改为?
FIELDS(N)
ENDFOR
USE
SETTALKON
24)
SETTALKOFF
CLEAR
INPUT"N="TON
INPUT"X="TOX
S=0
*****1*****
T=0&&改为T=1
FORI=1TON
T=T*X
S=S+T
ENDFOR
*****2*****
"S="+S&&改为?
"S=",S
SETTALKON
25)
SETTALKOFF
CLEAR
USE学生
ACCEPT"请输入学生学号:
"TOXH
*****1*****
SEEK学号=XH&&改为LOCATEFOR学号=XH
IF!
EOF()
*****2*****
REPLACEALL奖学金WITH10&&改为REPLACE奖学金WITH奖学金+10
学号,姓名,奖学金
ELSE
"没有找到!
"
ENDIF
USE
SETTALKON
26)
SETTALKOFF
CLEAR
C="零壹贰叁肆伍陆柒捌玖"
*****1*****
ACCEPT"N="TON&&改为INPUT"N="TON
*****2*****
N,"-->"+STR(C,2*N-1,2)&&改为?
N,"-->"+SUBSTR(C,2*N+1,2)
SETTALKON
27)
SETTALKOFF
CLEAR
USE学生
*****1*****
LOCATEFOR出生年月<=1971&&改为LOCATEFORYEAR(出生年月)<=1971
DOWHILE!
EOF()
?
姓名,出生年月
*****2*****
SKIP&&改为CONTINUE
ENDDO
USE
SETTALKON
28)
SETTALKOFF
CLEAR
*****1*****
ACCEPT"Y="TOY&&改为INPUT"Y="TOY
*****2*****
IF(Y%4ANDY!
%100)AND(Y%100ANDY!
%400)
&&改为IF(Y%4=0ANDY%100!
=0)OR(Y%100=0ANDY%400=0)
?
Y,"是闰年!
"
ELSE
?
Y,"不是闰年!
"
ENDIF
SETTALKON
29)
SETTALKOFF
CLEAR
INPUT'M='TOM
S=0
FORP=1TOM
*****1*****
IFINT(P/2)&&改为IFINT(P/2)=P/2
?
P
*****2*****
S=S+1&&改为S=S+P
ENDIF
ENDFOR
S
SETTALKON