01字串---二进制输出(结合网友大神方法和自己的思路)

来源:互联网 发布:c语言输出乘法表 编辑:程序博客网 时间:2024/05/22 09:51


问题描述


对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100


请按从小到大的顺序输出这32种01串。


输入格式
本试题没有输入。


输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

方法一:字符串方式

#include <stdio.h>    int main()  {      int i = 0, j = 0;// 0  1   2   3   4      char Zerone[6] = {'0','0','0','0','0','\0'};//初始化        for (i = 0; i < 32; ++i) // 2^5=32      {          puts(Zerone);          Zerone[4] += 1;   // 每次在末尾+1          for (j = 4; j >= 0; --j)          {              if ('2' == Zerone[j])  // 二进制进位              {                  Zerone[j] = '0';                  Zerone[j-1] += 1;              }          }      }      return 0;  }  


或方法二:

# include <stdio.h>int main(void){  int a[5]={0};  int temp;  int times;  int i;  printf("00000\n");  for(times=1;times<=31;times++) {     i=0;     a[i]+=1;     while(a[i]>=2)     {         temp=a[i]/2;         a[i]=a[i]%2;         i++;         a[i]=a[i]+temp;     }     for(i=4;i>=0;i--)     {        printf("%d",a[i]);     }     printf("\n"); }     return 0; }


或方法三:利用5个循环

#include <iostream>  using namespace std;    int main()  {      //用5个循环来实现      int i,j,k,m,n;        for(i = 0;i <= 1; i ++)      {          for(j = 0; j <= 1;j ++)          {              for(k = 0;k <= 1;k ++)              {                  for(m = 0; m <= 1;m ++)                  {                      for(n = 0;n <= 1;n ++)                      {                          cout<<i                              <<j                              <<k                              <<m                              <<n                              <<endl;                      }                  }              }          }      }        return 0;  }  



或方法四:二进制函数库<bitset>         #我的思路#好方法值得推荐~#
#include <iostream>#include<bitset>using namespace std;int main(){for(short n=0;n<32;n++)cout<<bitset<5>(n)<<endl;return 0;}


或方法五:利用位操作
#include <iostream>using namespace std;int main(){for(int j=0;j<32;j++){int k=j;int a[5]={0,0,0,0,0};for(int i=4; i>=0; i--){a[i]=k&1;k=k>>1;    }    for(int i=0;i<5;i++)    cout<<a[i];    cout<<endl;}system("pause");return 0;}






0 0
原创粉丝点击