25、本程序在屏幕上显示如下图形: 1 1 2 1 2 3
1 2 3 4 1 2 3 4 5
SET TALK OFF CLEA K=1
DO WHIL K<=5 C=1
******1****** DO WHIL C<=5 ******2****** ? C C=C+1 ENDDO ?
******3****** K=K-1 ENDDO
SET TALK ON
24.本程序用于输入一个表名,若表存在则打开表,并显示其各个字段名。
说明:******N******标注的下一句有错,改正错误并调试运行。不能删除******N******。 SET TALK OFF CLEAR
DO WHILE .T.
ACCEPT \"请输入表名:(不含扩展名)\" TO FNAME ******1******
IF .NOT.FILE(FNAME) WAIT \"此表不存在!\" ELSE
USE &FNAME ZDSM=FCOUNT() ******2******
? \"此表中的字段有:\"+ZDSM+\"个\" FOR I=1 TO ZDSM ? STR(I)+\" \" ******3****** ?? NAME(I) ENDFOR ENDIF
WAIT \"继续否?(Y/N)\" TO YN IF UPPER(YN)=\"N\" EXIT ENDIF ENDDO
SET TALK ON
23、本程序实现指定表指定条件的任意查询功能。 SET TALK OFF CLEAR
ACCEPT \"请输入表名:(扩展名略)\" TO FNAME ******1******
IF .NOT.FILE(FNAME) WAIT \"此表不存在!\" ELSE
USE (FNAME) ZDSM=FCOUNT()
? \"此表中的字段有:\"+STR(ZDSM)+\"个\" FOR I=1 TO ZDSM ? STR(I)+\" \" ?? FIELD(I) ******2****** ENDDO ENDIF
ACCEPT \"请输入显示表信息的条件表达式:\" TO EXP ******3****** LIST FOR EXP USE
SET TALK ON
22、本程序实现:从键盘输入学生的学号,计算该生的平均成绩,并说明成绩的档次(优、良、中、及格和不及格)。 SET TALK OFF CLEAR USE 成绩
C=\"不及格 及格 中 良 优\" ******1******
INPUT \"输入学号=\" TO XH LOCATE FOR 学号=XH IF FOUND()
******2******
TOTAL 成绩 TO CJ IF CJ<60 R=0
ELSE
R=INT(CJ/10)-5 ENDIF
******3****** DC=STR(C,6) ? XH,CJ,DC ELSE
? '查无此人!' ENDIF USE
SET TALK ON
21、本程序用于计算S=1+2+3+„+N的和。 SET TALK OFF CLEAR
******1******
ACCEPT “N=” TO N S=0 I=0
******2****** DO WHILE I<=N I=I+1 S=S+I ENDDO
******3******
? “1+2+3+„+”+N+”=”+S SET TALK ON
20.、本程序将成绩表中成绩小于60分的学号、课程号及成绩显示出来。 SET TALK OFF CLEAR USE 成绩
? '------------------------------------------' ? ' 不及格学生名单 ' ? '------------------------------------------' ? '学号 课程号 成绩' ******1****** GO BOTTOM
DO WHILE .NOT.EOF() IF 成绩<60
******2******
? 学号+SPACE(5)+课程号+SPACE(5)+成绩 ENDIF SKIP
ENDDO
? '---------------------------------------------' ******3******
? '当前日期'+CTOD(DATE()) USE
SET TALK ON 19、本程序实现:输入3个正数,判定是否构成一个三角形,如果构成一个三角形,则返回.T.,否则返回.F.。另外通过参数的引用将三角形的面积传回。 *主程序
SET TALK OFF CLEAR
INPUT 'X1=' TO X1 INPUT 'X2=' TO X2 INPUT 'X3=' TO X3 ******1******
? TARER(X1,X2,X3)
?\"三角形面积为:\"+ALLTRIM(STR(X1,19,2)) SET TALK ON *自定义函数
FUNCTION TARER ******2****** PARAMETERS A,B ******3****** IF A>B>C
S=(A+B+C)/2
A=SQRT(S*(S-A)*(S-B)*(S-C)) RETURN .T. ELSE A=0
RETURN .F. ENDIF
18、本程序比较从键盘输入的若干个数的大小,并输出其中的最大数和最小数。 SET TALK OFF CLEAR
INPUT ‘请输入一个数:' TO M ******1***** STORE 0 TO D,X DO WHILE .T.
INPUT '请再输入一个数:' TO N IF DIF X>N X=N ENDIF YN='A'******2*****
DO WHILE UPPER(YN)
WAIT '是否继续(Y/N)' TO YN ENDDO
******3****** IF LOWER(YN)='Y' EXIT ENDIF ENDDO
? '最大的数是:', D ? '最小的数是:', X SET TALK ON
17、本程序实现:对输入的正整数,判别其中包含指定数码的个数(如2312132中包含数码1的个数为2)。 SET TALK OFF CLEAR
INPUT '输入数值=' TO M INPUT '输入数码=' TO N YSM=M S=0
DO WHILE .T. ******1****** Y=MOD(M/10) IF Y=N S=S+1 ENDIF
******2****** M=INT(M/N) IF M=0
******3****** LOOP ENDIF ENDDO
?ALLTRIM(STR(YSM,19))+\"中包含数码\"+STR(N,1)+\"共\"+ALLTRIM(STR(S,19))+\"个。\" SET TALK ON
16、本程序输出一个对角线上元素为0,其它元素为1的6*6阶方阵。输出时每个元素占2个字符。
SET TALK OFF CLEAR
******1****** FUNCTION A(6,6) FOR I=1 TO 6
FOR J=1 TO 6 ******2****** IF I=J A(I,J)=0 ELSE
A(I,J)=1 ENDIF ENDFOR ENDFOR
FOR I=1 TO 6
FOR J=1 TO 6 ******2****** ?A(I,J) ENDFOR ?
ENDFOR
SET TALK ON
15、对任意一个正数值型数据(该数可有小数若干位,整数部分不超过12位)自动进行小数部分四舍五入取2位,并将其转换为中文大写金额. SET TALK OFF CLEAR
C1=\"零壹贰叁肆伍陆柒捌玖\"
C2=\"分角元拾佰仟万拾佰仟亿拾佰仟\" INPUT '输入一个正数=' TO Y ******1****** Y=STR(Y,2) Y=Y*100 I=1
D=SPACE(0) DO WHILE Y>0 P=MOD(Y,10) ******2******
D=SUBSTR(C1,2*P-1,2)+SUBSTR(C2,2*I-1,2)+D I=I+1
******3****** Y=INT(Y,10) ENDDO
?\"转换的结果是:\"+D SET TALK ON
14、将给定的正整数的值分解因子,并输出各个质数因子(如24的质数因子有2、2、2和3)(如果一个质数是某个数的约数,那么这个质数是这个数的质数因子) SET TALK OFF CLEAR
******1******
ACCEPT 'M=' TO M
IF INT(M)!=M OR ABS(M)!=M ? '输入的数据不符合题目要求!' ******2****** ENDIF I=2
? STR(M)+'的质数因子有:' DO WHILE I<=M IF M%I=0 ?? STR(I,6) ******3****** M=INT(M,I) LOOP ENDIF I=I+1 ENDDO ENDIF
SET TALK ON
13、本程序是在屏幕上打印如下图形: 9 8 7 6 5 4 3 9 8 7 6 5 9 8 7 9
SET TALK OFF CLEAR K=1
DO WHILE K<=4 C=1
******1****** DO WHILE C<=4
?? STR(10-C,3) C=C+1 ENDDO
******2****** C=C+1 K=K+1 ******3****** ENDFOR
SET TALK ON
12、对成绩.DBF(其中包含\"学号\"字段,并且以\"学号\"为关键字建立了索引标识“学号”)中学号相同的重复记录进行逻辑删除。 SET TALK OFF CLEAR
SET DELETED ON ******1****** USE 成绩
DO WHILE NOT EOF() XH=学号 SKIP
******2******
DO WHILE .NOT.EOF() DELETE
******3****** CONTINUE ENDDO ENDDO LIST USE
SET TALK ON
11、本程序输入一个一位数值(0-9),并把它转化为中文大写数字。 SET TALK OFF CLEAR
X='零壹贰叁肆伍陆柒捌玖' ******1******
DO WHILE NOT EOF() INPUT 'N=' TO N ******2****** S=STUFF(X,N,2) ?STR(N,1)+\"--->\"+S
WAIT '是否继续(Y/N)' TO T ******3******
IF UPPER(T)='n' EXIT ENDIF ENDDO
SET TALK ON
10、本程序求S=K!+„+M!(KINPUT 'K=' TO K INPUT 'M=' TO M STORE 0 TO S,A I=KDO WHILE I<=M ******1****** DO SUB
******2****** S=S+P I=I+1 ENDDO ? S
SET TALK ON PROC SUB PARA P,N
STOR 1 TO P,L ******3****** DO WHILE L<=I P=P*L L=L+1 ENDDO RETU
9.本程序用以判断输入的字符串是否是回文(回文是从左到右和从右到左读时都一样的一个字符串,不论大小写字母)。 SET TALK OFF CLEAR
C=SPACE(0)
ACCEPT '请输入字符串=' TO ST ******1****** I=LEFT(ST,1) J=1
DO WHILE J<=I Q=SUBST(ST,J,1) ******2******
C=C+Q J=J+1 ENDDO
******3****** IF ST=C
? ST,'是回文' ELSE
? ST,'不是回文' ENDIF
SET TALK ON
8.求3→200之间的素数。 SET TALK OFF CLEAR
FOR M=3 TO 200 ******1****** FOR N=1 TO M ******2****** IF M/2=INT(M/2) EXIT ENDIF ENDFOR ******3****** IF N>M ?? M ENDIF ENDFOR
SET TALK ON
7.本程序显示下列的九九乘法表 1 2 3 4 5 6 7 8 9 1 2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 9 18 27 36 45 54 63 SET TALK OFF CLEAR
FOR I=1 TO 9 ******1******
72 81 ?I
ENDFOR I=1
DO WHILE I<=9 ?
******2****** FOR J=1 TO 9 ?? STR(I*J,4) ENDFOR I=I+1
******3****** ENDFOR
SET TALK ON
6.程序是显示输出给定行数的对称菱形图案,如下图所示。
SET TALK OFF CLEAR
INPUT \"N=\" TO N &&输入5 FOR I=1 TO N *******1****** ?SPACE(N-I) *******2****** FOR J=1 TO N
??CHR(ASC(\"A\")+I-1) ENDFOR ENDFOR
FOR P=N-1 TO 1 STEP -1 ?SPACE(N-P+1) *******2******
FOR K=1 TO 2*N-1 ??CHR(ASC('A')+P-1) ENDFOR ENDFOR
SET TALK ON
5.统计显示“课程”表中所有不同学期考试课和考查课的总学分数。输出格式如下:
学期 考试课总学分 考查课总学分 *************************************** 1 11 3
set talk off clear use 课程
index on 开课学期 to kkxq
?\"学期 考试课总学分 考查课总学分\" ?\"*******************************************\" do while .not.eof() xq=开课学期 store 0 to ks,kc *******1****** do while .T. if 考查标志=\"1\" *******2****** kC=kC+学分数 else kc=kc+学分数 endif
*******3****** CONTINUE enddo ?xq+str(ks,19,2)+str(kc,19,2) enddo use
set talk off
4.输出3~M(M为正整数,从键盘输入)之间的素数和素数的个数。 SET TALK OFF CLEAR
INPUT \"M=\" TO M K=0
FOR X=3 TO M FOR N=2 TO X-1 *******1****** IF X/N=0 EXIT ENDIF ENDFOR
*******2****** IF N>X ?? X
*******3****** K=K+X ENDIF ENDFOR
?\"共\"+ALLTRIM(STR(K))+\"个素数\" SET TALK ON
3.用带参调用实现: M!/(M-N)!*N!
SET TALK OFF CLEAR
INPUT \" M=\" TO M INPUT \" N=\" TO N MJ=M
*******1****** DO JC NJ=N
DO JC WITH NJ *******2****** MNJ=0
DO JC WITH MNJ ? \" S=\" ,MJ/(NJ*MNJ) SET TALK ON PROCEDURE JC PARAMETERS X T=1
FOR I=1 TO X T=T*I ENDFOR
*******3****** X=i
RETURN
2.求x1 + x2 + x3 + x4 ++ xn的值。n,x从键盘输入。 set talk off clear
input \"n=\" to n input \"x=\" to x *******1****** s=1 t=1 I=1
DO WHILE I<=n *******2******
t=s*x s=s+t I=I+1
*******3****** endFOR ?\"s=\set talk off
1.求当1!+ 3!+ 5!++ n!的值不超过1020时的临界值及n的值。 set talk off clear s=0 n=1
*******1****** do while I*******2****** t=i*i endfor s=s+t*******3****** n=n+1 enddo ?\"n=\ set talk on