01、从键盘任意输入一个3位整数,若输入的数据不是一个3位整数则给出提示信息,编程实现3位整数的逆序输出。
方法一
SET TALK OFF
CLEAR
INPUT "请输入一个三位数:" TO A
If a>100 and a<1000
A1=int(a/100)
A2=int(mod(a,100)/10)
A3=mod(a,10)
?a1+10*a2+100*a3
Else
m="输入的不是三位数,请重新输入!"
?m
ENDIF
SET TALK ON
RETURN
方法二
若要求输出的数必须是三位整数,则程序如下:
SET TALK OFF
CLEAR
INPUT "请输入一个三位数:" TO A
If a<100 or a>=1000 or mod(a,100)=0
Messagebox("输入的不是三位数或重排后不是三位数,请重新输入!")
Else
A1=int(a/100)
A2=int(mod(a,100)/10)
A3=mod(a,10)
?a1+10*a2+100*a3
ENDIF
SET TALK ON
RETURN
方法三
clear
accept"请输入一个三位整数:" to x
n=len(x)
s=""
for i=3 to 1 step -1
s=s+substr(x,i,1)
endfor
?"逆序输出为:",s
return
02、键盘输入n,求N!
方法一
Set talk off
Clear
P=1
Input “请输入N:” to n
For i=1 to n
p=p*i
Endfor
? “N!=”,p
Set talk on
Return
方法二
clear
input"n="to n
s=1
do while n>0
s=s*n
n=n-1
enddo
?"n!=",s
return
03、计算e的近似值。其公式为:e=1+1/1!+1/2!+1/3!+…+1/n!,直到1/n!<0.000001为止。
方法一
Set talk off
Clear
E=1
t=1
i=1
Do while .t.
T=1
For k=1 to i
T=t*k
Endfor(Next k)
i=i+1
If 1/t<0.000001
Exit
Endif
E=e+1/t
Enddo
? ”e=”,e
Set talk on
Return
方法二
Set talk off
clear
e=0 &&累加和
f=1 &&存放阶乘
k=1 &&累积项
do while 1/f>=0.000001
e=e+1/f
f=f*k
k=k+1
enddo
?"e=",e
Set talk on
return
04、编程:求S=1-1/2+1/3-1/4+1/5-……-1/100。
方法一
set talk off
CLEAR
s=0
i=0
FOR i=1 TO 100 STEP 1
IF i%2=0
s=s-1/i
ELSE
s=s+1/i
endif
ENDFOR
?s
Set talk on
Return
方法二
Set talk off
clear
s=0 &&累加和赋除值
f=1 &&符号变量
for i=1 to 100
s=s+f*1/i
f=-1*f &&改变符号
endfor
?"s=",s
Set talk on
return
05、用循环输出下列图形。
*
* * *
* * * * *
* * * * * * *
方法一:
SET TALK OFF
CLEAR
r=1
cc=10
DO WHILE r<=4
s=1
DO WHILE s<=2*r-1
@r,cc SAY “*”
cc=cc+1
s=s+1
ENDDO
cc=10-r
r=r+1
ENDDO
RETURN
方法二:
clear
input "请输入层数:"to n
for i=1 to n &&控制行数
??space(40-i) &&设置每一行起始列位
for j=1 to 2*i-1 &&控制每一行星号个数
??"*"
endfor
? &&换行
endfor
06、输出乘法口诀表(下三角形的形式输出)。
试用固定次数循环的嵌套格式编写一个打印九九乘法口诀表的程序。
方法一:
*用do while-enddo语句打印九九乘法表
clear
a=1
do while a<=9
b=1
do while b<=a
c=a*b
?? str(a,1)+”*”+str(b,1)+”=”+str(c,2)+ “ ”
b=b+1
enddo
a=a+1
?
enddo
方法二:
*用for—endfor语句打印九九乘法表
SET TALK OFF
CLEAR
FOR Y=1 TO 9
FOR X=1 TO y
Z= Y * X
??STR(Y,1)+“*”+STR(X,1)+“=”+STR(Z,2)+“ ”
ENDFOR
?
ENDFOR
SET TALK ON
RETURN
07、输入一个数n,判断其是否是素数。(提示:素数又称质数,只能够被1和它本身整除。如果要判断n是否是素数,就用2~n-1之间的数逐个去除,若全部都除不尽,则n为素数,否则不是素数。为减少除的次数,提高运行效率,除到 即可。)
Set talk off
Clear
P=1
Input "请输入一个数N:" to n
For i=2 to n-1
If n/i=int(n/i)
P=0
Exit
Endif
Endfor
If p<>0
?"数"+ltrim(str(n))+"是素数"
Else
?"数"+ltrim(str(n))+"不是素数"
Endif
Set talk on
Return
输入10个数,让它们按降序的顺序输出。(提示:使用一维数组)
Set talk off
Clear
dime s(10)
for i=1 to 10
input '请输入第'+STR(i)+'个数:' to s(i)
endfor
for i=1 to 9
for j=i+1 to 10
if s(i)
Y
T=X
X=Y
Y=T
Endif
? “X=”,X
? “Y=”,Y
09、编程求和S=1+2+3+…+100。
SET TALK OFF
CLEAR
STORE 0 TO K,S
DO WHILE k<=100
S= K +S
K = K +1
ENDDO
?”累加和S=”,S
SET TALK ON
RETURN
10、从键盘输入10个数,编程找出其中的最大值和最小值
set talk off
clear
input “请从键盘输入一个数:” to a
store a to max, min
for I=2 to 10
input “请从键盘输入一个数:” to a
if maxa
min=a
endif
endfor
?”最大值为:”, max
?”最小值为:”,min
set talk on
return
11、求1000以内的 “水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153=13+53+33,故153是水仙花数。
方法一:
Clear
? “打印1000以内的水仙花数:”
for x=100 to 999
x1=x%10 &&取出个位数
x2=int(x/10)%10 &&取出十位数
x3=int(x/100) &&取出百位数
if x=x1^3+x2^3+x3^3
?x
endif
endfor
方法二:
set talk off
clea
for I=1 to 9
for j=0 to 9
for k=0 to 9
if I^3+j^3+k^3=100*I+10*j+k
? 100*I+10*j+k
endif
endfor
endfor
endfor
return
12、求出0~300之间能被3整除的数的和?
SET TALK OFF
I=1
S=0
DO WHILE I<=300
IF mod(I,3)=0
S=S+I
ENDIF
I=i+1
ENDDO
??S
RETURN
13、求1到100中偶数的和
AA=0
FOR II=2 TO 100 STEP 2
AA=AA+II
ENDFOR
? AA
屏幕显示为:2550
14、编写程序打印如下的图形
********
********
********
********
********
********
********
SET TALK OFF
CLEAR
A=1
DO WHILE A<=7
B=1
DO WHILE B<=8
@A,B+A SAY “*”
B=B+1
ENDDO
A=A+1
ENDDO
SET TALK ON
RETURN
第 2 页 共 14 页