长度为五位的01串,每一位都可能是0或1,一共有32种可能。请按从小到大的顺序输出这32种01串

img

从0到2^5-1遍历,把数字转成对应的二进制显示就可以了。

img

代码如下:

#include <stdio.h>

//10进制转radius进制
void trans(int n,int radius,char buf[])
{
    int i = 0;
    int t,j;
    char ch;
    while(n)
    {
        t = n%radius;
        if(t >= 10)
            buf[i] = 'A' + t-10;
        else
            buf[i] = '0' + t;
        i++;
        n/=radius;
    }
    buf[i] = 0;

    //逆序
    for (j=0,t=i-1;j<t;j++,t--)
    {
        ch = buf[j];
        buf[j] = buf[t];
        buf[t] = ch;
    }

}


int main()
{
    int i;
    char buf[8]={0};
    for (i=0;i<32;i++)
    {
        trans(i,2,buf);
        printf("%05s\n",buf);
    }
    return 0;
}


#include <iostream>
using namespace std;

int main()
{
    for (int i=0; i<32; ++i)
    {
        for (int j=0; j < 5; ++j)//输出五位
        {
            int mask = 1 << (4 - j);//计算掩码
            //掩码和数值i相与,结果为真则输出1,结果为假则输出0
            cout << ((i & mask) ? "1" : "0");
        }
        
        cout << endl;//换行
    }

    int i = 0;
    cin >> i;
    return 0;
}