DO CheckPrime WITH 50,10
PROCEDURE CheckPrime
PARA nCount,nColCount
CLEAR
i=1
n=2
DO WHILE i<=nCount
isPrime=.t.
FOR j=2 TO INT(SQRT(n))
*IF j%n=0 &&错
IF n%j=0
isPrime=.f.
EXIT
ENDIF
ENDFOR
IF isPrime
??n
IF i%nColCount=0
?
ENDIF
*i=i+1 &&位置错
ENDIF
i=i+1 &&移至此
n=n+1
ENDDO
ENDFUNC
(四)
PrintPrime(400,5) &&小于自然数400的素数并按每行5个素数打印
PROCEDURE PrintPrime
PARA nMax,ncol
i=0 &&记录素数个数
FOR n=2 TO nMax
flag=.t.
FOR j=2 TO INT(SQRT(n))
IF n%j=0
flag=.f.
LOOP
ENDI
ENDFOR
IF flag
??n
i=i+1
*IF MOD(i,ncol)<>0 &&错
IF MOD(i,ncol)=0
?
ENDIF
ENDIF
ENDFOR
ENDPROC
--------------------
前一题是只改了两处;后一题改一处就可通过了!
你试试!
原代码排版后如下:nnumber=437
cresult=space(0)
if nnumber#0
do while nnumber>0
n=mod(nnumber,16)
nnumber=int(nnumber/16)
if n<10
cresult=str(n,1)+cresult
else
cresult=chr(asc('A')+n)+cresult
endif
enddo
else
cresult=0
endif
wait wind "十六进制数表示为"+cresult
只要将这句
cresult=chr(asc('A')+n)+cresult
改成
cresult=chr(asc('A')+n-10)+cresult
里面要减去10, 因为只有n=10,才是A
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)