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

大家看看这段代码,不长不长,决不会耽误大家时间的.解决思路

2012-03-24 
大家看看这段代码,不长不长,决不会耽误大家时间的.#includeiostream.hvoidmain(){intacout pleasei

大家看看这段代码,不长不长,决不会耽误大家时间的.
#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整除了。

热点排行