首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解C++:解决思路

2012-04-12 
求解C++:#include iostream.hvoid main(){int acout please input a number:\ncin aint c1 a

求解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;

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

热点排行