E᥊℘ัҽᥴꪺ323 2022-01-05 10:59 采纳率: 0%
浏览 44

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

img

  • 写回答

2条回答 默认 最新

  • 关注

    从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;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月5日