程序设计习题
FOR j=1 to 9 IF i<=j ??STR(i,1)+”*”+STR(j,1)+”=”+_S_t_r_(i_*j_,2_)+SPACE(2) ENDIF
ENDFOR _____?_____ ENDFOR
1-10、本题程序求以下正项级数的近似值:
sn
1 1 23
1 2 3 4
1 3 4 5
程序设计习题课讲解
2011年5月
基本知识:
程序文件扩展名.prg 程序以语句为单位,一行一条语句,续行用;
号 程序的运行:do 程序文件名
程序基本结构:
顺序 分支
IF…… [ELSE]…… ENDIF DO CASE…… ENDCASE
循环
DO WHILE…… ENDDO FOR…… ENDFOR SCAN…… ENDSCAN
ENDFUNC
1-7、完善下列程序,计算 3+33+333+3333+……前十项之和(08春)
CLEAR m=3 n=0 s=0 FOR i=1 to 10 n=___1_0*_n_+m____ s=s+n ENDFOR
1-8、完善下列程序,使得两个程序功能相同
【程序清单1】 CLEAR S=0 P=1 FOR i=1 TO 20
【主程序】 CLEAR PUBLIC x,y,z
x=3 y=4 z=5 Do PP ?x+y+z
【过程】 PROCEDURE LOCAL x
x=5 y=7 z=x+y ENDPROC
2-6、(2010春)运行下列程序段后,屏幕显示的运行结 果为_______9________
Clear Set talk off Store 3 to n ?ss(n) Function ss
1-5、完善下列“九九乘法”程序(P99.prg),使得 P99.prg程序运行时,屏幕上显示如下乘法表:
1:1
SET TALK OFF
2:2 4
CLEAR
3:3 6 9
FOR m =1 TO 9
4:4 8 12 16
?STR(m,2)+" : "
5:5 10 15 20 25
FOR n=__1_T_O__m__
Parameters x Y=1 P=0 For i=1 to x
Y=y*I P=p+y Endfor Return p endfunc
2-7、某xim(系名)表的数据如图所示(共有9条记录),则 运行下列程序段后,输出结果为___________
CLEAR USE xim GO 4 n=0 SCAN FOR LEN(ALLTRIM(ximing))=6
Yn=.F. Exit
Endif
Endfor
If .NOT.yn
?i,’/40’
S=s+j
Endif
S=s+i
Endfor
?”其和为:”,s/40
下列程序的功能是求这样一个三位数,该三位数等于其每位 数字的阶乘之和,即abc=a!+b!+c!
clear
for i=100 to 999
s=0
for j=1 to 3
n (n
1 1) (n
2)
当 sn1 sn 0.0001 时停止求和运算,为近似值,请完善以下程序:
【程序清单】
CLEAR i=0 SN1=0 DO WHILE .T. i=i+1 SN1=SN1+1/(i*(i+1)*(i+2)) SN2=__S_N_1+_1_/(_(i+_1_)*_(i_+2_)*_(i_+_3)_) ___ IF ABS(SN2-SN1)<0.0001
clear
accept "请输入:" to cccc &&该语句功能是交互式得输入数据(字符串)
n=len(cccc)
if n=0
return
endif
create cursor temp(cc c(2),nn i) &&创建临时表存储字符及出现的次数
FUNCTION DS PARAMETERS CSTR
CR=SPACE(0) FOR N=1 TO LEN(CSTR)
IF SUBSTR(CSTR,N,1)=SPACE(1)
__l_oo_p____
ENDIF CR=CR+SUBSTR(CSTR,N,1) ENDFOR
RETURN __C_R_____
CSTRING=‘12345CZ’
CRESULT=SPACE(0)
IF LEN(CSTRING)#0
FOR N=1 TO CSTRING LEN(CSTRING)
C=SUBSTR(CSTRING,N,1) CRESULT=CRESULT+CHR(ASC(C)+ 1 )
ENDFOR
ENDIF
N
WAIT WINDOWS ‘加密后为’+RESULT
s=s+m/i m= __m__+_i ENDFOR ?s
2-1、上述程序运行以后,显示内容的前二行 为________,_______。
SET TALK OFF S='ABCDEF' N=LEN(S) K=1 DO WHILE K<=N
?SUBS(S,K,N-K) K=K+1 ENDDO
(答案: ABCDE ,BCDE)
If m%n=0
Return .F.
Endif
Endfor Return .T. Endfunc
下列程序的功能是按递增顺序依次列出所有分母为40 、 分子小于40的简约分数,并计算序列的和。
Clear
?”序列为:1/40”
S=1
For i=2 to 39
Yn=.T.
For j=2 to i
If i%j=0 and 40%j=0
Clear For i=4 to 200 Step 2
For j=2 to i
If isprime(j) and isprime(i-j)
?i,’=’,j,’+’,i-j
Endif
Endfor Endfor Function isprime
Parameter m For n=1 to sqrt(m) n=2
c=val(subs(str(i),j,1)) c=val(subs(str(i,3),j,1))
s=s+jc(c)
endfor
if s=i
?"三位数等于其每位数字的阶乘之和:",i
endif
endfor
function jc
private x
parameters x
y=1
for n=1 to x
y=y*n
_____e_x_it____________
ENDIF ENDDO ?SN2
1-11、下列程序用来计算数列2/1,3/2,5/3,……, 155/18,173/19,192/20,……的前20项之和。 阅读程序并完善,使它能实现要求的功能。
【程序清单】 CLEAR m=2 s=0 FOR i=1 TO 20
1-2、下列程序用来求0~100偶数之和, 请将它填写完整。
STORE 0 TO N,S DO WHILE .T.
IF N>100
____E_X_I_T_______
ELSE
S=S+N
ENDIF N=N+2 ENDDO
1-3、下列程序是用来计算1!+2!+3!+4!+5!的值, 将程序补充完整
SET TALK OFF X=1 P=0 S=1
2、下面的程序功能是将十六进制数转换成十进制 数表示。
CNUMBER=‘4FC7’
NRESULT=0
FOR N=LEN(CNUMBER)TO 1 STEP -1
C=LEFT(CNUMBER,1)
IF BETWEEN(C,’0’,’9’) NRESULT=NRESULT*16 + C
VAL(C)
ELSE
X=3
Y=5 S=AREA(X,Y) ?S
FUNCTION AREA _P_A_R_A_M_E_T_E_R_S_X__,_ SY1=X*Y RETURNS1____
ENDFUNC
X=3 Y=5 S=0 DO __A_R__E_A__WITH X,Y,S ?S PROCEDURE AREA
_P_A__R_A__M_E__T_E_R__S__X_,__Y_,__S__1_ S1=X*Y RETURN ENDPROC
endfor
return y
endfunc
下列程序的功能是用数字1~9组成3个三位数(每个数字 只能用一次),第一个数是第二个数的二分之一,第一个 数是第三个数的三分之一。
clear
m=0
for i=123 to 333
j=i*2
k=i*3
c=str(i,3)+str(j,3)+str(k,3)
ok=.T.
for n=1 to 9
if !str(n)$c
!str(n,1)$c
ok=.F.
exit
endif
endfor
if ok
m=m+1Fra bibliotek?"第"+m+"种分法为:",i,j,k
endif
endfor
allt(str(m))
下列程序的功能是:输入一个由ASCII码字符和 GB2312字符集字符组成的字符串后,统计并显示出现次 数最多的10个字符及其出现的次数。