作业帮 > 综合 > 作业

下面是我编写的一个程序,判断一个数能否被3、5、7整除,并输出相应的信息

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/28 15:34:14
下面是我编写的一个程序,判断一个数能否被3、5、7整除,并输出相应的信息
#include
main()
{int x,y;
printf("input an interger:\n");
scanf("%d",&x);
if(x%3==0) y=3;
if(x%5==0) y=5;
if(x%7==0) y=7;
if(x%7==0&&x%5==0&&x%3==0) y=15;
if(x%7==0&&x%5==0) y=12;
if(x%7==0&&x%3==0) y=10;
if(x%5==0&&x%3==0) y=8;
if(x%3!=0&&x%5!=0&&x%7!=0) y=0;
switch (y)
{
case 3:printf("只能被3整除\n");break;
case 5:printf("只能被5整除\n");break;
case 7:printf("只能被7整除\n");break;
case 15:printf("能被3、5、7整除\n");break;
case 12:printf("能被5、7整除\n");break;
case 10:printf("能被3、7整除\n");break;
case 8:printf("能被3、5整除\n");break;
case 0:printf("不能被3、5、7整除\n");break;
}
}
但是我发现,输入210时,输出却是:能被3、5整除;本来应该是能被3、5、7整除啊,为什么?
下面是我编写的一个程序,判断一个数能否被3、5、7整除,并输出相应的信息
if(x%3==0) y=3;
if(x%5==0) y=5;
if(x%7==0) y=7;
if(x%7==0&&x%5==0&&x%3==0) y=15;
if(x%7==0&&x%5==0) y=12;
if(x%7==0&&x%3==0) y=10;
if(x%5==0&&x%3==0) y=8;
你没有用else.
能被 3.5.7整除的同时也满足 被5.7整除. 被 3. 7整除. 被 3.5整除.
也就是 后面的4个判断都成立了.
y被赋值了4次.
到最后 y= 8;
你输出的就是能被 3.5整除.
修改办法由两种:
① 把if(x%7==0&&x%5==0&&x%3==0) y=15;这句判断放到最后面
② 使用if...else的方法重新组织一下这部分判断内容