大家看看这段代码,不长不长,决不会耽误大家时间的.
#include <iostream.h>
void main()
{
int a;
cout < < "please input a number:\n ";
cin > > a;
int c1 = a%3 ==0;
int c2 = a%5 ==0;
int c3 = a%7 ==0;
switch((c1 < <2)+(c2 < <1)+c3){
case 0: cout < < "不能被3,5,7整除.\n "; break;
case 1: cout < < "只能被7整除.\n "; break;
case 2: cout < < "只能被5整除.\n "; break;
case 3: cout < < "可以被5,7整除.\n "; break;
case 4: cout < < "只能被3整除.\n "; break;
case 5: cout < < "可以被3,7整除.\n "; break;
case 6: cout < < "可以被3,5整除.\n "; break;
case 7: cout < < "可以被3,5,7整除.\n "; break;
}
}
其中这段总是不懂 int c1 = a%3 ==0;
int c2 = a%5 ==0;
int c3 = a%7 ==0;
switch((c1 < <2)+(c2 < <1)+c3)...大侠们,能指教一二吗?不胜感激!
[解决办法]
int c1 = a%3 ==0; //如果a能被3整除则c1 = 1;
int c2 = a%5 ==0; //如果a能被5整除则c2 = 1;
int c3 = a%7 ==0; //如果a能被7整除则c3 = 1;
switch((c1 < <2)+(c2 < <1)+c3) //将c1左移两位和c2左移一位和c3左移以为相加
[解决办法]
switch((c1 < <2)+(c2 < <1)+c3)
c1、c2、c3都是前面赋得值,要么是0要么是1
表达式((c1 < <2)+(c2 < <1)+c3)就是看最后3个2进制位,把3个数合到一个数上了。
c1等于1,第3位就是1;c2等于1,第2位就是1;c3等于1,第3位就是1;
这样数字0-7就可以判断哪一位上是1,是1就代表可以被3、5、7整除了。