主题:一道关于整除和if语法的问题,本人是初学者,望读程序清单进而理解!!
先知者先问
[专家分:0] 发布于 2006-11-07 03:17:00
给定一个正整数N,判断它是否能同时被3、5、7整除,并输出以下信息之一:
(1)能同时被3、5、7整除;
(2)能被其中两个数整除(说明是哪两个数);
(3)只能被其中一个数整除(说明是哪一个数);
(4)不能被3、5、7中任何一个数整除。
本人望借助前辈的脚步,加快理解,前进!!
回复列表 (共11个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2006-11-07 08:55:00
不要综合考虑,分开,三个运算各自完成。
zhengchu=0
if n mod 3 =0 then
? "3 ";
zhengchu=1
endif
if n mod 5 =0 then
? "5 ";
zhengchu=1
endif
if n mod 7 =0 then
? "7 ";
zhengchu=1
endif
if zhengchu then
? "可以整除";n
else
?“都不能整除”;n
endif
这种方法的关键是设置一个特征变量(最好使用布尔变量,我懒阿,就用了一般变量)。
如果楼主希望得到可以整除的多少,就把“zhengchu=1”改成“zhengchu=zhengchu+1”,再在后面的输出部分输出这个量。
板凳
先知者先问 [专家分:0] 发布于 2006-11-07 16:05:00
伤悲大哥!!
你的解题思路太高!!
我理解不了!!
能不能先有一种中规中矩做法!!
3 楼
老大徒伤悲 [专家分:29120] 发布于 2006-11-07 16:32:00
这个思路是最简单的。
我加上注释给你看。
zhengchu=0 '能整除的个数归零
if n mod 3 =0 then '如果能被3整除
? "3 "; '输出能用来整除的数字3
zhengchu=zhengchu+1 '能整除的个数加一
endif '结束如果
if n mod 5 =0 then '如果能被5整除
? "5 "; '输出能用来整除的数字5
zhengchu=zhengchu+1 '能整除的个数加一
endif '结束如果
if n mod 7 =0 then '如果能被7整除
? "7 "; '输出能用来整除的数字7
zhengchu=zhengchu+1 '能整除的个数加一
endif '结束如果
if zhengchu then '如果能整除的个数不是零
? "可以整除";n '接着输出后半句
? n;"一共可以被";zhengchu;"个数字整除。" '换行输出可以整除的个数
else '没有整除过
?“都不能整除”;n '输出结论
endif '结束如果
当然了,要是验证的数字不止3、5、7,而是很多,就考虑使用循环
4 楼
先知者先问 [专家分:0] 发布于 2006-11-08 15:18:00
伤悲大哥,我运行了!!
但结果不是题目说要求的内容!!
我只学会了一点,?是print的快捷方式!!
5 楼
老大徒伤悲 [专家分:29120] 发布于 2006-11-08 15:45:00
你的要求是:一定要输出
(1)能同时被3、5、7整除;
(2)能被其中两个数整除(说明是哪两个数);
(3)只能被其中一个数整除(说明是哪一个数);
(4)不能被3、5、7中任何一个数整除。
这四句话中的一句?
6 楼
老大徒伤悲 [专家分:29120] 发布于 2006-11-08 16:02:00
Do
Input n
Loop Until n > 0
zhengchu = 0
If n Mod 3 = 0 Then zhengchu = zhengchu + 1
If n Mod 5 = 0 Then zhengchu = zhengchu + 2
If n Mod 7 = 0 Then zhengchu = zhengchu + 4
Select Case zhengchu
Case 0
Print n; "不能被3、5、7中任何一个数整除。"
Case 1
Print n; "只能被其中一个数整除(这个数是3)"
Case 2
Print n; "只能被其中一个数整除(这个数是5)"
Case 3
Print n; "能被其中两个数整除(这两个数是3和5)"
Case 4
Print n; "只能被其中一个数整除(这个数是7)"
Case 5
Print n; "能被其中两个数整除(这两个数是3和7)"
Case 6
Print n; "能被其中两个数整除(这两个数是5和7)"
Case 7
Print n; "能同时被3、5、7整除"
Case Else
Print "出错啦!"
End Select
end
真难受啊
7 楼
moz [专家分:37620] 发布于 2006-11-08 17:52:00
print ZC$( n )
function ZC$( n )
a$=mid$("3",1,-(n mod 3=0))+mid$("5",1,-(n mod 5=0))+mid$("5",1,-(n mod 7=0))
select case len(a$)
case 3:ZC$="(1)能同时被3、5、7整除;"
case 2:ZC$="(2)能被其中两个数整除("+mid$(a$,1,1)+"和"+mid$(a$,2,1)+");"
case 1:ZC$="(3)只能被其中一个数整除("+a$+");"
case 0:ZC$="(4)不能被3、5、7中任何一个数整除。"
end select
end function
8 楼
jyl0716 [专家分:0] 发布于 2006-11-09 10:51:00
MOZ同学专用一些新手看不懂的函数...
9 楼
w1212q [专家分:660] 发布于 2006-11-24 16:51:00
type boleank
TRUE
FALSE
end type
dim a%(2) '定义一个数祖
dim i% '定义一个变量
dim n$ '定义一个变量
dim u as kbolean '
const TRUE=0
const FALSE=-1
a(0)=3:a(1)=5:a(2)=7 '
input "Shu:",n$
for i%=0 to 2
if val(n$) mod a%(i%)=0 then
u=TRUE
else
u=false
end if
next
print u
10 楼
def [专家分:3380] 发布于 2006-11-25 23:55:00
'这是一个我想起来的算法,切不可生搬硬套,否则后果自负
defint a-z
input ,n;
if n mod 3=0 then s=3
if n mod 5=0 then s=s+5
if n mod 7=0 then s=s+7
select case s
case 3+5+7: ?"(1)能同时被3、5、7整除"
case 3+5: ?"(2)能被其中两个数整除(3、5)"
case 3+7: ?"(2)能被其中两个数整除(3、7)"
case 5+7: ?"(2)能被其中两个数整除(5、7)"
case 3,5,7: ?"(3)只能被其中一个数整除(" + s + ")"
case 0: ?"(4)不能被3、5、7中任何一个数整除。"
end
我来回复