用VFP程序设计1—N之间奇数之积

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:32:09
最好写出来
CLEAR
I=1
F=1
INPUT "请输入一个正整数:" TO N
IF N=0 .OR. N=1
F=N
ENDIF
DO WHILE .T.
I=I+1
IF INT (I/2)= I/2
LOOP
ENDIF
F=F*I
IF I>=N
EXIT
ENDIF
ENDDO
?'1-'+STR(N,3)+'之间的奇数乘积为:',F
return
有什么错误
两位的答案还是错的

&&不用那么复杂
CLEAR
LOCAL p
p=1
INPUT "请输入一个正整数:" TO N
FOR i=1 TO n
IF i%2=1
p=p*i
ENDIF
ENDFOR
?'1-'+ALLTRIM(STR(N))+'之间的奇数乘积为:',p

这个程序没有你写的这么复杂。
可以简单一点。

CLEAR
I=1
F=1
INPUT "请输入一个正整数:" TO N
IF N=0 .OR. N=1
F=N
ENDIF

DO WHILE I<N
I=I+2
IF I>N THEN
EXIT
ENDIF
F=F*I
EDNDO

?'1-'+ALLTRIM(STR(N))+'之间的奇数乘积为:',F

RETURN

错误1:
DO WHILE .T.
应改为
DO WHILE N>1

错误2:
IF INT (I/2)= I/2
LOOP
ENDIF
F=F*I
应改为
IF INT (I/2)<> I/2
F=F*I
ENDIF

错误3:
?'1-'+STR(N,3)+'之间的奇数乘积为:',F
当N的位数大于3时STR(N,3)会显示成‘***’
STR(N,3)应改为ALLTRIM(STR(N)),这样就即可以正常显示又可以把数字转换成字符后的无用空格删除

程序:
I=1
F=1
Input "请输入一个正整数:" To N
If N=0 .Or. N=1