回 帖 发 新 帖 刷新版面

主题:一道关于整除和if语法的问题,本人是初学者,望读程序清单进而理解!!

给定一个正整数N,判断它是否能同时被3、5、7整除,并输出以下信息之一:
(1)能同时被3、5、7整除;
(2)能被其中两个数整除(说明是哪两个数);
(3)只能被其中一个数整除(说明是哪一个数);
(4)不能被3、5、7中任何一个数整除。

本人望借助前辈的脚步,加快理解,前进!!

回复列表 (共11个回复)

沙发

不要综合考虑,分开,三个运算各自完成。

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”,再在后面的输出部分输出这个量。

板凳

伤悲大哥!!
你的解题思路太高!!
我理解不了!!
能不能先有一种中规中矩做法!!

3 楼

这个思路是最简单的。
我加上注释给你看。

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 楼

伤悲大哥,我运行了!!
但结果不是题目说要求的内容!!
我只学会了一点,?是print的快捷方式!!

5 楼

你的要求是:一定要输出
(1)能同时被3、5、7整除;
(2)能被其中两个数整除(说明是哪两个数);
(3)只能被其中一个数整除(说明是哪一个数);
(4)不能被3、5、7中任何一个数整除。
这四句话中的一句?

6 楼

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 楼

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 楼

MOZ同学专用一些新手看不懂的函数...

9 楼


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 楼

'这是一个我想起来的算法,切不可生搬硬套,否则后果自负
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

我来回复

您尚未登录,请登录后再回复。点此登录或注册