1 #include <iostream>
2 usingnamespace std;
3
4 constint max=4;
5 int a[max];
6 int b[max]={1,2,3,4};
7 //把十进制转化为二进制
8 void test(int s){
9 int r,i=0;
10 r=s/2;
11 a[i]=s%2;
12 while(r){
13 s=r;
14 i++;
15 a[i]=s%2;
16 r=s/2;
17 }
18 for(int j=0;j<max;j++)
19 cout<<a[j];
20 cout<<endl;
21 for(int k=0;k<max;k++)
22 if(a[k]==1)
23 cout<<b[k];
24 cout<<endl;
25 }
26 //把对应的比特串输出
27 void comb(int n){
28 int s=-1,a=1;
29 for(int i=1;i<=n;i++)//计算2的n次方
30 a=a*2;
31 for(int j=1;j<=a;j++){
32 s++;//s=0
33 test(s);
34 }
35 }
36 void main(){
37 int s;
38 cout<<"输入数字:"<<endl;
39 cin>>s;
40 comb(s);
41 }
2 usingnamespace std;
3
4 constint max=4;
5 int a[max];
6 int b[max]={1,2,3,4};
7 //把十进制转化为二进制
8 void test(int s){
9 int r,i=0;
10 r=s/2;
11 a[i]=s%2;
12 while(r){
13 s=r;
14 i++;
15 a[i]=s%2;
16 r=s/2;
17 }
18 for(int j=0;j<max;j++)
19 cout<<a[j];
20 cout<<endl;
21 for(int k=0;k<max;k++)
22 if(a[k]==1)
23 cout<<b[k];
24 cout<<endl;
25 }
26 //把对应的比特串输出
27 void comb(int n){
28 int s=-1,a=1;
29 for(int i=1;i<=n;i++)//计算2的n次方
30 a=a*2;
31 for(int j=1;j<=a;j++){
32 s++;//s=0
33 test(s);
34 }
35 }
36 void main(){
37 int s;
38 cout<<"输入数字:"<<endl;
39 cin>>s;
40 comb(s);
41 }
根据教材提示,要用一个比特串,但c、c++则不能直接声明一个二进制的串,老师提醒我创个函数把十进制转化为二进制。。。挺有成就感的