#include <stdio.h>
void main(){
int x,s=0,w=0,q=0;
scanf("%d",&x);
if(x%3==0)
{
s=1;
}
if(x%5==0)
{
w=2;
}
if(x%7==0)
{
q=4;
}
switch(s+w+q){
/*case 0:printf("不能被3、5、7任何一个数整除!");break; 与default功能相同*/
case 1:printf("可以被3整除");break;
case 2:printf("可以被5整除");break;
case 4:printf("可以被7整除");break;
case 1+2:printf("可以被3、5整除");break;
case 1+4:printf("可以被3、7整除");break;
case 2+4:printf("可以被5、7整除");break;
case 1+2+4:printf("可以被3、5、7整除");break;
default:printf("不能被3、5、7任何一个数整除!");
}
}
这种写法来源于linux文件权限(仅用三个数字的和数 就可以表示 读 写 执行三种权限)
相较于 if else 写法更为简洁
#include<stdio.h>
int main()
{
int a,b,c;
printf("请输入一个整数。\n");
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("能同时被3、5、7整除。\n");
else
{
if ((a%3!=0&&a%5==0&&a%7==0)||(a%3==0&&a%5!=0&&a%7==0)||(a%3==0&&a%5==0&&a%7!=0))
{
if(a%3!=0&&a%5==0&&a%7==0)
{b=5;c=7;}
else if(a%3==0&&a%5!=0&&a%7==0)
{b=3;c=7;}
else if(a%3==0&&a%5==0&&a%7!=0)
{b=3;c=5;}
printf("能同时被3、5、7中的两个数整除,且这两个数为%d和%d。\n",b,c);
}
else if((a%3!=0&&a%5!=0&&a%7==0)||(a%3==0&&a%5!=0&&a%7!=0)||(a%3!=0&&a%5==0&&a%7!=0))
{
if(a%3!=0&&a%5!=0&&a%7==0)
b=7;
if(a%3==0&&a%5!=0&&a%7!=0)
b=3;
if(a%3!=0&&a%5==0&&a%7!=0)
b=5;
printf("能同时被3、5、7中的一个数整除,且这两个数为%d。\n",b);
}
else
printf("不能被3、5、7中任何一个数整除。\n");
}
return 0;
}