DAYOEN
&&将输入的秒转换成时分秒的形式
input "请输入秒数" to S
F=0
H=0
?zh(@H,@F,@S)&&@+参数返回时返回原变量,即shf的值返回到HFSprocedure zh(h,f,s)&&可以用()接受参数,也可以用parameter{私有}、lparameters{局部}
h=int(s/3600)
f=int((s-(h*3600))/60)
s=s-(h*3600)-(f*60)
return allt(str(h))+'小时'+allt(str(f))+'分钟'+allt(str(s))+'秒'
endproc
--------------------------------------------------------------------------------------------------------------------------
DAYTOO
&&求a与b的最大公倍数
clear
a=26013
b=18538
ji=a*b
do while .t.&&辗转相除法,两个数相除。
&&若有余数,用被除数除余数,以此往复。
&&直到无余数,被除数就是最大公约数。
if mod(a,b)=0
exit
&&公约数=b
else
gy=mod(a,b)
a=b
b=gy
endif
enddo
&&两数之积=公倍数*公约数 既:公倍数=两数之积/公约数
gb=ji/b
?gb
-----------------------------------------------------------------------------------------------------------------------------------------------------
DAYTHREE
&&求1000以内的水仙花数 三位数,各位的三次幂等于本身
SET TALK OFF
CLEAR
FOR b=1 TO 9
for s=0 to 9
for g=0 to 9
if b^3+s^3+g^3=b*100+s*10+g
h=b*100+s*10+g
? h
endif
endfor
endfor
endfor
------------------------------------------------------------------------------------------------------------------------------------------------------
**冒泡排序
&& 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
&& 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
&& 针对所有的元素重复以上的步骤,除了最后一个;
&& 重复步骤1~3,直到排序完成。clear
input "请输入需要的随机数个数:" to ss
do sj with ssfor lun=1 to ss
for ci=1 to ss-lun &&到ss-1的时候已经全部排列完毕,且最高位是最大的数,无需再排列。
if a(ci)>a(ci+1)
cen_=a(ci+1)
a(ci+1)=a(ci)
a(ci)=cen_
endif
endfor
endforfor i=1 to ss
??allt(str(a(i)))+space(2)
endfor**随机数
procedure sj
parameters s
public a(s)
k=1
do while k<=s
a(k)=rand()*100
k=k+1
enddo
endproc
------------------------------------------------------------------------------------------------------------------
&&选择排序
clear
input "请输入需要的随机数个数:" to ss
do sj with ssfor Lun=1 to ss
min_=a(Lun)
for c_i=Lun to ss
if min_>a(c_i)
min_=a(c_i)&&保存min数和下标
AD=c_i
endif
endfor
C=a(lun)&&将min数与该轮的数交换
a(Lun)=min_
a(AD)=C
endforfor i=1 to ss
??allt(str(a(i)))+space(2)
endfor**随机数
procedure sj
parameters s
public a(s)
k=1
do while k<=s
a(k)=rand()*100
k=k+1
enddo
endproc-----------------------------------------------------------------------------------------------------------------------------
&&二项式展开式
clear
input "请输入(a+b)^n的a:" to a
input "请输入(a+b)^n的b:" to b
input "请输入(a+b)^n的n:" to n
do zk_ with a,b,nprocedure zk_
parameters a,b,n
store 0 to zh,s
for i=0 to n
do zh_ with i,n,zh
x=(zh*a^(n-i)*b^i)
s=s+x
?"第"+allt(str(i))+"项为:"+allt(str(x))+space(4)+"二次项系数为:"+allt(str(zh))
endfor
?"二项展开式结果:"+allt(str(s))
endproc&&求二项式系数
procedure zh_
parameters i,n,zh
store 1 to n_,i_,k_
do jc with n,n_
do jc with i,i_
do jc with (n-i),k_
zh=n_/(i_*k_)
endproc&&阶乘通用
procedure jc
parameters n,s
for z=2 to n
s=s*z
endfor
endproc