主题:帮忙看看哪儿错了
			 疏影风流
				 [专家分:0]  发布于 2010-04-08 01:36:00
 疏影风流
				 [专家分:0]  发布于 2010-04-08 01:36:00							
			从1开始统计不能被3或是5整除的数,并将他们累加,和大于300的时候,结束统计
clear
set talk off
s=0
n=1
do while .t.
     if s>300
        exit
     else
       if int(n/3)!=n/3 or int(n/5)!=n/5
         ??n
         ??","
         s=s+n
       endif
       n=n+1
     endif  
enddo 
?s
set talk on
return
初学者,请别见笑
			最后更新于:2010-04-08 08:15:00
			
					 
		
			
回复列表 (共6个回复)
		
								
				沙发
				
					 GEORGECHIN [专家分:440]  发布于 2010-04-08 09:34:00
GEORGECHIN [专家分:440]  发布于 2010-04-08 09:34:00				
				INT()函数会自动将返回值4舍5入的,比如INT(1/2)是等于1的,而不是0,你应该要用这样的条件来判定:
  IF (INT(N/3)*3)<>N .OR. (INT(N/5)*5<>N)
    ?N
    ??,
    S=S+N
  ENDI
  N=N+1
							 
						
				板凳
				
					 qjbzjp [专家分:8830]  发布于 2010-04-08 09:46:00
qjbzjp [专家分:8830]  发布于 2010-04-08 09:46:00				
				clear
set talk off
s=0
n=1
do while !s>300
       if MOD(n,3)=0 or MOD(n,5)=0
         ??n
         ??","
         s=s+n
       endif
       n=n+1
enddo 
?s
set talk on
return
							 
						
				3 楼
				
					 疏影风流 [专家分:0]  发布于 2010-04-08 09:48:00
疏影风流 [专家分:0]  发布于 2010-04-08 09:48:00				
				运行结果一样 还有就是取整函数应该是没有四舍五入的吧
							 
						
				4 楼
				
					 GEORGECHIN [专家分:440]  发布于 2010-04-08 09:53:00
GEORGECHIN [专家分:440]  发布于 2010-04-08 09:53:00				
				[quote]运行结果一样 还有就是取整函数应该是没有四舍五入的吧[/quote]
你试试INT(1/2)等于多少就知道有没有4舍5入了啊。
PS:现在结果是怎样的?
							 
						
				5 楼
				
					 Ilikefox [专家分:5770]  发布于 2010-04-08 11:32:00
Ilikefox [专家分:5770]  发布于 2010-04-08 11:32:00				
				呵呵,不要看到“或”就“or”啊!
“不能被3或是5整除”,并不是“不能被3整除 或是 不能被5整除”,而是“不能被3整除 并且 不能被5整除”。条件写为 int(n/3)!=n/3 AND int(n/5)!=n/5
没明白的话,俺换个说法,“不能被(3或是5)整除”,也就是“能被(3或是5)整除”取反。写为 
not (int(n/3)=n/3 or int(n/5)=n/5)
上述两个表达式等效。
							 
						
				6 楼
				
					 疏影风流 [专家分:0]  发布于 2010-04-08 12:07:00
疏影风流 [专家分:0]  发布于 2010-04-08 12:07:00				
				
 i like fox ,i like you 你的回答总是一针见血,切入要害,我就是不明白这个地方,看您的回答,总是让人很爽,您是VF老师嘛?给您留了几次言,想跟您认识一下,可以嘛?谢谢
							 
									
			
我来回复