左移<<和右移>>的问题!

cyy219 2004-10-18 10:03:37
判断一整数能否被3,5,7整除的问题
#include <iostream.h>

void main()
{
int a;
cout <<"please input a number:\n";
cin >>a;

int c1 = a%3==0; //这里==0的作用是什么呀?
int c2 = a%5==0;
int c3 = a%7==0;


switch((c1<<2)+(c2<<1)+c3){ //左移一位相当于乘2,那左移二位呢?
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;
}
}
这个程序的算法是怎样的呀?
...全文
410 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
icymirror 2004-10-19
  • 打赏
  • 举报
回复
开始的赋值处:根据是否可以被3、5、7整除,得到三个标志,然后,在switch之前,把三个标志通过位操作组合成一个数,而下面列出的各种情况值就是对应于各种位的状态时的结果。
gdc123 2004-10-19
  • 打赏
  • 举报
回复
同意
:friend_mhj()
jiutiao 2004-10-19
  • 打赏
  • 举报
回复
study
greenteanet 2004-10-19
  • 打赏
  • 举报
回复
int c1 = a%3==0;//先判断a%3是否==0,结果为0或1赋值给c1
左移两位相当×4。
friend_mhj 2004-10-19
  • 打赏
  • 举报
回复
void main()
{
int a;
cout <<"please input a number:\n";
cin >>a;

int c1 = a%3==0; //这里==0的作用是什么呀?
int c2 = a%5==0; /* 如果重新写一下你就明白了 */
int c3 = a%7==0; /* int c3; c3=((a%7)==0); */
/* 这几行的作用是给这个数 */
/* 是否能被3,5,7整除设个标志位 */


switch((c1<<2)+(c2<<1)+c3){ //左移一位相当于乘2,那左移二位呢?
/* switch里面的表达式是位运算。 */
/* 主要作用是将上面的三个标志位 */
/* 放到同一个字节中,方便判断。 */
/* 相当于三位的二进制数 */
/* 1 c2 c3 */
case 0: cout <<"不能被3,5,7整除.\n"; break; /* 0 0 0 */
case 1: cout <<"只能被7整除.\n"; break; /* 0 0 1 */
case 2: cout <<"只能被5整除.\n"; break; /* 0 1 0 */
case 3: cout <<"可以被5,7整除.\n"; break; /* 0 1 1 */
case 4: cout <<"只能被3整除.\n"; break; /* 1 0 0 */
case 5: cout <<"可以被3,7整除.\n"; break; /* 1 0 1 */
case 6: cout <<"可以被3,5整除.\n"; break; /* 1 1 0 */
case 7: cout <<"可以被3,5,7整除.\n"; break; /* 1 1 1 */
}
}
这个程序的算法是怎样的呀?
cyy219 2004-10-19
  • 打赏
  • 举报
回复
呵呵,明白了,谢谢大家!
snowingbf 2004-10-18
  • 打赏
  • 举报
回复
Ryan1005 2004-10-18
  • 打赏
  • 举报
回复
自己用笔划一划,其实很容易理解的。
没有什么*2的问题。
renheihei 2004-10-18
  • 打赏
  • 举报
回复
int c1 = a%3==0;//先计算a%3是否==0,结果为0或1给c1
相当于int c1=((a%3)==0);
insulator 2004-10-18
  • 打赏
  • 举报
回复
int c1 = a%3==0; //这里==0的作用是什么呀?
如果a被3整除(a%3==0)==1,所以c1=1;

c1<<2  //乘以4

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧