一直以來都以一個(gè)C++新手的身份自居,所以雖然“學(xué)”了很多年,但看到下面這段程序時(shí)還是令我感到十分驚艷!
#include <iostream>
using namespace std;
int 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;
}
return 0;
}
驚艷的原因就是第14行用 (c1<<2)+(c2<<1)+c3 表示整除的思想。
從注冊這個(gè)帳號(hào)前我就是個(gè)C++新手,好多年了我依然是個(gè)C++新手,難道我就只能是個(gè)C++新手?
我、不、甘、心!
在我這就老想著if...else,猛一看到 (c1<<2)+(c2<<1)+c3 就覺得很巧妙了。
呵呵
這段代碼確實(shí)應(yīng)該是個(gè)老師寫的,這是錢能的C++教程上的代碼。只是為什么不好呢?