/*对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。*/
想到了循环的办法,还想到了模仿二进制加法但是并没有实现出来。找到了五种办法的博客 https://blog.csdn.net/u012110719/article/details/41870877。
最基本(循环)-->
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a,b,c,d,e; 5 for(a=0;a<2;a++) 6 for(b=0;b<2;b++) 7 for(c=0;c<2;c++) 8 for(d=0;d<2;d++) 9 for(e=0;e<2;e++) 10 cout<<a<<b<<c<<d<<e<<endl; 11 return 0; 12 }
十进制转换成二进制-->
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a,b,c,d,e; 5 for(a=0;a<32;a++){ 6 cout<<a%32/16<<a%16/8<<a%8/4<<a%4/2<<a%2/1<<endl;//除号代表十进制有没有大于这个数 类似于8421,有的话这个位上就是1;
//取余代表循环次数,由于是从小到大的,每个位上都是有0有1,所以是除号的两倍 7 } 8 return 0; 9 }
原文:https://www.cnblogs.com/bhjohnny/p/14458167.html