读书人

求解C++:解决思路

发布时间: 2012-04-12 15:46:35 作者: rapoo

求解C++:
#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;和(c1<<2)+(c2<<1)+c3是什么意思?谢谢

[解决办法]
int c1 = a%3 ==0 a除以3的余数为0则c1 = 1, 否则 c1 = 0;
<<是左移操作符

[解决办法]
int c1 = a%3 ==0
这句的意识是int c1 = ((a%3) ==0),也就是说如果a能被3整除(a%3的值就是0)的话c1=1,否则(a%3的值非0)c1=0。
其他的c2,c3同理。

然后把c1左移2位,c2左移1位,再和c2加起来,用二进制模式看的话就是00000c1c2c3。
也就是有如下几个可能(等号左边二进制位表示,等号右边十进制表示)
00000000 = 0
00000001 = 1
00000010 = 2
00000011 = 3
00000100 = 4
00000101 = 5
00000110 = 6
00000111 = 7 (c=1,c2=1,c3=1就是能被3,5,7整除,上面的类推)
[解决办法]
int c1 = a%3 ==0这个式子的结合方式是c1 =(a%3 ==0)
先判断a%3 ==0,真则返回1,非真返回0;

<<(向左) >>(向右)在这里是位运算符,格式是 变量名<<(>>)移动的位数

读书人网 >C++

热点推荐