问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
解题思路:
该题为入门循环题,考察写题者对循环的掌握程度。
建立一个长度为5的int型数组,初始化全为0,进行32次循环。每次循环按判断对a[4]进行加1,再进行满2进1,输出数组a。
#include<bits/stdc++.h>
int main()
{
int i,j,a[5]={0};
for(i=0;i<32;i++)
{
if(i==0)
for(j=0;j<5;j++)
printf("%d",a[j]);
else
{
a[4]++;
for(j=4;j>0;j--)
if(a[j]==2)
{
a[j]-=2;
a[j-1]++;
}
for(j=0;j<5;j++)
printf("%d",a[j]);
}
printf("\n");
}
return 0;
}