7、从键盘任意输入N个数,去掉其中最大值和最小值,然后求平均值。
程序代码:
SET TALK OFF
CLEAR
S=0
INPUT "N=" TO N
STORE N TO MAX,MIN
FOR I=1 TO N
INPUT "B=" TO B
S=S+B
IF MAX
MAX=B
ENDIF
IF MIN>B
MIN=B
ENDIF
ENDFOR
?"AVERAGE="+STR((S-MAX-MIN)/(N-2),19,2)
SET TALK ON
8、利用参数传递和过程文件,求(M!+N!)/(M-N)!
程序代码:
SET TALK OFF
CLEAR
SET PROC TO 程序20
INPUT "M=" TO M
INPUT "N=" TO N
STORE 0 TO SM,SN
DO JC2 WITH M,SM
DO JC2 WITH N,SN
DO MC2 WITH M-N,N
?"表达式结果为S="+STR((SM+SN)/N,10,2)
SET PROC TO
SET TALK ON
PROC JC2
PARA X,Y
I=1
T=1
DO WHILE I<=X
T=T*I
I=I+1
ENDDO
Y=T
RETURN
PROC MC2
PARA Y,X
I=1
T=1
DO WHILE I<=X
T=T*Y
I=I+1
ENDDO
X=T
RETURN
9、编程求1~1000之内的同构数。(同构数:若A是同构数,则A出现在A的平方数的右边。如:5*5=25,5出现在25的右边,3*3=9,3不出现在9的右边,所以5是同构数,而3不是。)
程序代码:
SET TALK OFF
CLEAR
FOR X=1 TO 1000
P=X*X
L=LEN(ALLTRIM(STR(X,19)))
IF ALLTRIM(STR(X,19))=RIGHT(ALLTRIM(STR(P,19)),L)
??X
ENDIF
ENDFOR
SET TALK ON
10、本程序用于输入一个表名,若表存在则打开,并显示出其各个字段名。
程序代码:
SET TALK OFF
DO WHILE .T.
ACCEPT '请输入表名:' TO FNAME
IF .NOT.FILE(FNAME)
WAIT '此表不存在'
ELSE
USE &FNAME
ZDSM=FCOUNT()
? '此表中的字段有:'+STR(ZDSM)+'个'
FOR I=1 TO ZDSM
? STR(I)+' '
?? FIELD(I)
ENDFOR
ENDIF
WAIT '是否继续(Y/N)' TO YN
IF UPPER(YN)='N'
EXIT
ENDIF
ENDDO
SET TALK ON