3&&——5?"对不起,你无权使用本系统"ENDIFSETTALKON2)**本程序用于求解一元二次方程ax^2" />
程序调试题
一、填空
1)
SET TALK OFF
CLEAR
C=""
FOR I=1 TO 3 && ——1
ACCEPT C+"请输入口令:" TO PSW
IF PSW=="MANAGER" && ——2
?"欢迎使用本系统!"
EXIT && ——3
ENDIF
C="口令输入错误,再试一次!"
ENDFOR && ——4
IF I>3 && ——5
?"对不起,你无权使用本系统"
ENDIF
SET TALK ON
2)
**本程序用于求解一元二次方程ax^2+bx+c=0
CLEAR ALL
**循环,条件恒真
DO WHILE .T.
CLEAR
INPUT " 输入一元二次方程的二次项系数a(a不能为0)=?" TO a IF a=0
LOOP
ENDIF
INPUT " 输入一元二次方程的一次项系数b=?" TO b
INPUT " 输入一元二次方程的常数项c=?" TO c
**把判别式的运算结果保存到内存变量panbie中
STORE b*b-4*a*c TO panbie
**显示一个空行
?
**判断判别结果是否小于0
IF panbie<0
**若小于0显示无实数解
?" 无实数解!"
ELSE
**判断判别结果是否等于0
IF panbie=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=退出,其它键继续......" TO tuichu
**把用户输入的单字符先转换成大写,再与大写“Q”比较
IF UPPER(tuichu)="Q" &&_____3 **若tuichu中为“Q”,清屏、退出DO WHILE 循环
CLEAR &&______4
EXIT &&______5 ENDIF
**返回到DO WHILE 继续循环
ENDDO
**返回调用程序
RETURN
3)
**本程序按部门汇总分别求出奖金,工资,扣款的值,最后再写入临时表gzhz.dbf中CLEAR ALL
SET SAFETY OFF
SET TALK OFF
USE 工资表
**按部门
SORT ON 部门TO gzpx && ______1
USE gzpx
BROWSE
**把3个数值字段求和,并保存在内存变量中gz,jj,kk,为总计作准备
SUM 工资, 奖金扣款TO gz, jj, kk &&_________2
**按部门分类汇总,汇总结果为每个部门作为一条记录放入汇总表文件gzhz.dbf TOTAL ON 部门TO gzhz &&______3
**打开汇总表文件
USE gzhz &&______4
**尾部追加一条空记录,准备放总计
APPEND BLANK
**把准备好的总计值放入相应字段
REPLACE 工资WITH gz, 奖金WITH jj, 扣款WITH kk &&_______5 BROWSE
**关闭打开的表文件
CLEAR ALL
ERASE gzpx.dbf
ERASE gz0.dbf
4)
SET TALK OFF
CLEAR
INPUT "N=" TO N
INPUT "A=" TO A &&_______ 1
STORE A TO X,Y
S=A
P=N-2
FOR I=2 TO N
INPUT "B=" TO B
S=S+B &&_______ 2
IF X
X=B &&_______ 3
ENDIF
IF Y>B &&_______ 4
Y=B
ENDIF
ENDFOR
R=S-X-Y &&________ 5
?R/P
SET TALK ON
5)
SET TALK OFF
CLEAR
ACCE "P=" TO P
L=LEN(P) && -------------1
C=""
FOR I=1 TO L
A=SUBSTR(P,I,1) && ------------2
DO CASE
CASE A>="a" AND A<="u" OR A>="A" AND A<="U"
A= CHR(ASC(A)+5) &&------------3
CASE A>="v" AND A<="z" OR A>="V" AND A<="Z"
A= CHR(ASC(A)-21) &&------------4
ENDCASE
C= C+A &&--------------5
ENDFOR
?P+"--->"+C
SET TALK ON
6)
SET TALK OFF
SET ESCAPE OFF
CLEAR
USE 学生
?"************按ESC键结束操作************"
DO WHILE .T.
ACCEPT "输入指定的班级(如:951或953):" TO BJ
LOCA TE FOR LEFT(学号,3)=BJ
IF FOUND()
SUM 奖学金TO JXJ FOR LEFT(学号,3)=BJ
?BJ+"班全体学生的奖学金总额为:"+STR(JXJ,5,2)+",中文大写为:"+JEZH(JXJ) ELSE
?"指定班级不存在!"
ENDIF
IF INKEY(0)=27
EXIT
ENDIF
ENDDO
USE
SET TALK ON
SET ESCAPE ON
FUNCTION JEZH
PARAMETERS X
C1="零壹贰叁肆伍陆柒捌玖"
C2="分角元拾佰仟万拾佰仟亿"
M=ROUND(X,2)
M=M*100
I=0
C=SPACE(0)
DO WHILE .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------------------
IF M=0
EXIT
ENDIF
ENDDO
RETURN C
ENDFUNC
7)
SET TALK OFF
DO WHILE .T.
CLEAR
ACCEPT "请输入表名(扩展名略):" TO TBN
IF FILE("&TBN..DBF")
USE (TBN) &&_________ 1 ELSE
W AIT "指定的表不存在!" TIMEOUT 5
LOOP
ENDIF
?"表中的全部字段名列表:"
FOR N = 1 TO FCOUNT() &&_________ 2
? FIELDS(N) &&________ 3
ENDFOR
ACCEPT "请输入显示表信息的条件表达式:" TO EXPR
BROWSE FOR &EXPR &&_________ 4 WAIT "是否还要显示其他表文件中的内容?Y/N: " TO YN
IF UPPER(YN)!= "Y "
EXIT &&_________ 5
ENDIF
ENDDO
USE
SET TALK ON
8)
SET TALK OFF
CLEAR
USE 学生
INDEX ON 学号TO INN0
?"**********各班男女奖学金总额统计************"
?"班级男同学奖学金总额女同学奖学金总额"
DO WHILE NOT EOF() &&________ 1 CLASS=LEFT(学号,3)
STORE 0 TO BOYS, GIRLS &&________ 2
DO WHILE LEFT(学号,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
SET TALK ON
9)
SET TALK OFF
INPUT "M=" TO M
S=1 &&______ 1
FOR N=2 TO M-1 &&______ 2
IF M%N=0 &&______ 3
S=S+N &&______ 4
ENDIF
ENDFOR
IF S=M &&______ 5
?M,"是完数!"
ELSE
?M,"不是完数!"
ENDIF
SET TALK ON
10)
SET TALK OFF
CLEAR
INPUT "M=" TO M
N=M
DO WHILE INT(N)<>N &&______ 1
N=N*10
ENDDO
STORE MOD(N,10) TO D, X &&______ 2
DO WHILE N>0 &&_______ 3
R= MOD(N,10) &&______ 4
IF R>D
D=R
ENDIF
IF R X=R ENDIF N=INT(N/10) &&_______ 5 ENDDO ?M,"中位值最大的数码是:"+STR(D,1)+",最小的数码是:"+STR(X,1)+" 。" SET TALK ON 11) SET TALK OFF INPUT "X=" TO X &&________ 1 S=STR(X,5)+"=" P=0 FOR I=2 TO X IF X%I=0 &&_________ 2 P=1 S=S+STR(I,3)+"*" X=X/I &&_________ 3 I=I-1 LOOP &&________ 4 ENDIF ENDFOR IF P=1 &&__________ 5 ?LEFT(S,LEN(S)-1) ELSE ?STR(X,5)+" 没有因子!" ENDIF SET TALK ON 12) SET TALK OFF CLEAR USE 成绩 ACCEPT"请输入学生的学号:"TO XH LOCATE FOR 学号=XH &&__________1 IF !FOUND() ?"查无此人!" ELSE A VERAGE 成绩TO CJ FOR学号=XH &&_________ 2 DO CASE CASE CJ>=90 DC="优" CASE CJ>=80 DC="良" CASE CJ>=70 DC="中" CASE CJ>=60 DC="及格" OTHERWISE &&__________ 3 DC="不及格" ENDCASE &&__________ 4 ?XH,CJ,DC ENDIF &&_________ 5 USE SET TALK ON 13) SET TALK OFF CLEAR INPUT "M=" TO M INPUT "N=" TO N SM=M DO JC WITH SM SN=N DO JC WITH SN SMN=M-N DO JC WITH SMN CMN=N DO MC WITH M,CMN DO MC WITH M, M &&__________ 1 ?(SM+SN)/(SMN+CMN+M) SET TALK ON PROC JC PARA X &&__________ 2 T=1 FOR I=1 TO X T=T*I ENDFOR X=T &&__________ 3 RETURN PROC MC PARA X, Y &&____________ 4 T=1 FOR J=1 TO Y T=T*X ENDFOR Y=T &&_________ 5 14) SET TALK OFF CLEAR INPUT "M=" TO M INPUT "N=" TO N X=M DO JC SM=X &&___________ 1 X=N DO JC SN=X X=M-N DO JC SMN=X Z=M Y=N DO MC CMN=Y Y=M DO MC CMM=Y &&_________ 2 ? (SM+SN) / ((SMN+CMN+CMM)*M/N &&________ 3 SET TALK ON PROC JC T=1 FOR I=1 TO X T=T*I ENDFOR X=T &&_________ 4 RETURN PROC MC T=1 FOR J=1 TO Y T=T*Z ENDFOR Y=T &&__________ 5 15) SET TALK OFF CLEAR INPUT "X=" TO X S=0 STORE 1 TO T1,T2,I T3=-1 DO WHILE ABS(T1/T2)>1E-5 &&_________ 1 STORE 1 TO T1,T2 FOR J=1 TO 2*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)) SET TALK ON 16) SET TALK OFF CLEAR INPUT "M=" TO M S=0 &&________ 1 FOR I=M TO 1 STEP -1 IF SS(I) &&_______ 2 S=S+1 ??STR(I,5) ENDIF ENDFOR &&_______ 3 ?STR(S,5) SET TALK ON FUNC SS FOR J=2 TO X-1 IF INT(X/J)=X/J EXIT &&_______ 4 ENDIF ENDFOR IF J=X &&________ 5 RETURN .T. ELSE RETURN .F. ENDIF 17) SET TALK OFF CLEAR INPUT "A=" TO A INPUT "B=" TO B INPUT "C=" TO C && 1 IF A>B && 2 T=A A=B B=T ENDIF IF A>C && 3 T=A A=C C=T ENDIF IF B>C && 4 T=B B=C C=T ENDIF ? A, B, C && 5 SET TALK ON 18) SET TALK OFF CLEAR INPUT "A=" TO A DO CASE CASE TYPE("A")="C" && 1 ? A,"是字符型数据。" CASE TYPE("A")="N" && 2 ? A,"是数值型数据。" CASE TYPE("A")="L" && 3 ? A,"是逻辑型数据。" CASE TYPE("A")="D" && 4 ? A,"是日期型数据。" ENDCASE SET TALK ON 19) SET TALK OFF DO WHILE .T. && 1 CLEAR ACCEPT "请输入要显示的表文件名(扩展名略):" TO TN NM=TN+".DBF" && 2 IF FILE(NM) USE (TN) && 3 BROWSE ELSE ?"您所指定的表文件并不存在!" ENDIF WAIT "是否还要查看其他表文件?Y/N:" TO YN IF UPPER(YN)="Y" LOOP && 4 ELSE EXIT && 5 ENDIF ENDDO USE SET TALK ON 二、改错 20) SET TALK OFF SET ESCAPE OFF CLEAR ?"按ESC键结束操作" DO WHILE .T. INPUT "M=" TO M IF INT(M)!=M OR ABS(M)!=M ?"输入的数据不符合题目要求!" LOOP ENDIF ?ALLTRIM(STR(M,19))+"的质数因子有:" I=2 DO WHILE I<=M IF M%I=0 ??STR(I,6) **************************** M=MOD(M,I) && 改为M = INT(M/I) LOOP ENDIF I=I+1 ENDDO IF INKEY(0)=27 EXIT ENDIF ENDDO SET TALK ON SET ESCAPE ON 21) SET TALK OFF STORE "伟大祖国"TO XY CLEAR N=1 DO WHILE N<8 ? SUBSTR(XY,N,2) ***************** N=N+1 && 改为N=N+2 ENDDO ? SUBSTR(XY,5,4) ??SUBSTR(XY,1,4) RETURN 22) SET TALK OFF CLEAR *****1***** S=0 && 改为S=1 STORE 1 TO T,N DO WHILE S<=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 SET TALK ON 23) SET TALK OFF CLEAR USE 学生 *****1***** FOR N = 1 TO RECCOUNT() && 改为FOR N = 1 TO FCOUNT() *****2***** FOUND(N) && 改为? FIELDS(N) ENDFOR USE SET TALK ON 24) SET TALK OFF CLEAR INPUT "N=" TO N INPUT "X=" TO X S=0 *****1***** T=0 && 改为T=1 FOR I=1 TO N T=T*X ENDFOR *****2***** ?"S="+S && 改为?"S=",S SET TALK ON 25) SET TALK OFF CLEAR USE 学生 ACCEPT "请输入学生学号:" TO XH *****1***** SEEK学号=XH &&改为LOCA TE FOR 学号=XH IF !EOF() *****2***** REPLACE ALL 奖学金WITH 10 &&改为REPLACE 奖学金WITH 奖学金+10 ?学号,姓名,奖学金 ELSE ?"没有找到!" ENDIF USE SET TALK ON 26) SET TALK OFF CLEAR C="零壹贰叁肆伍陆柒捌玖" *****1***** ACCEPT "N=" TO N &&改为INPUT "N=" TO N *****2***** ?N,"-->"+ STR(C,2*N-1,2) &&改为?N,"-->"+ SUBSTR(C,2*N+1,2) SET TALK ON 27) SET TALK OFF CLEAR USE 学生 LOCATE FOR 出生年月<=1971 && 改为LOCA TE FOR YEAR(出生年月)<=1971 DO WHILE !EOF() ?姓名,出生年月 *****2***** SKIP && 改为CONTINUE ENDDO USE SET TALK ON 28) SET TALK OFF CLEAR *****1***** ACCEPT "Y=" TO Y && 改为INPUT "Y=" TO Y *****2***** IF (Y%4 AND Y!%100) AND (Y%100 AND Y!%400) && 改为IF (Y%4=0 AND Y%100!=0) OR (Y%100=0 AND Y%400=0) ?Y,"是闰年!" ELSE ?Y,"不是闰年!" ENDIF SET TALK ON 29) SET TALK OFF CLEAR INPUT 'M=' TO M S=0 FOR P=1 TO M *****1***** IF INT(P/2) &&改为IF INT(P/2)=P/2 ?P *****2***** S=S+1 &&改为S=S+P ENDIF ENDFOR ?S SET TALK ON 三、表单调试题(代码改错) 30)小写转换为大写 TEXT1的KEYPRESS代码如下: LPARAMETERS nKeyCode, nShiftAltCtrl XI=Thisform.text1.value if nkeycode=13 ************************ https://www.wendangku.net/doc/228659730.html,bel2.caption="输出效果为:"+allt(Lower(xi)) &&把上面改为https://www.wendangku.net/doc/228659730.html,bel2.caption="输出效果为:"+allt(UPPER(xi)) this.selstart=0 this.sellength=len(allt(this.value)) endif 31)画圆 FORM1的INIT代码: ****************** LOCAL rad && 改为public rad this.rad=2 && 题目错误,应为rad=2,但是不要改! thisform.timer1.interval=100 32)立体字幕 FORM1 的ACTIV ATE代码: ********************************** https://www.wendangku.net/doc/228659730.html,bel1.Visible=.f. && 改为https://www.wendangku.net/doc/228659730.html,bel1.Visible=.T. Thisform.Timer1.InterVal=500 Thisform.Timer1.Enabled=.f. 33)文本框输入限定 Optiongroup1的Click代码: Thisform.Text1.Selectonentry=.t. Thisform.Text1.Value="" Thisform.Text1.Inputmask="" ***************************** Thisform.Edit1.readonly=.f. && 改为Thisform.Edit1.readonly=.T. If this.Value=1 Thisform.Text1.Inputmask="" Thisform.text1.value="可接受任何字符" &&在编辑框中显示 Thisform.edit1.Setfocus &&焦点定在文本框中 Else Thisform.Text1.Inputmask="99999999999999999999" Thisform.Edit1.Value="只接受数字字符"+chr(13)+"Inputmask::9999999999" Thisform.Text1.Setfocus Endif 34) 计算正方体 Command1的Click代码: ***************************** r=val(Thisform.Text1.Value) && 改为r=val(ALLTRIM(Thisform.Text1.Value)) x1=Thisform.OptionGroup1.Value x2="正方体" if !empty(r) Do Case Case x1=1 https://www.wendangku.net/doc/228659730.html,bel2.Caption=x2+"周长="+allt(Str(6*r)) Case x1=2 https://www.wendangku.net/doc/228659730.html,bel2.Caption=x2+"表面积="+allt(Str(6*r*r)) Case x1=3 https://www.wendangku.net/doc/228659730.html,bel2.Caption=x2+"体积="+allt(Str(r*r*r)) Endcase Else Messagebox("输入不能为空",48+0+0) Thisform.Text1.Setfocus Endif 35)信息窗 COMMAND1的CLICK代码: cText="考试开始" cCode=0+64 cMessage="信息窗口" ************* Msg(cCode,cText,cMessage) && 改为MESSAGEBOX(cText,cCode,cMessage) ************* thisform.activate && 改为thisform.RELEASE