基础练习 01字串

时间:2022-06-17
本文章向大家介绍基础练习 01字串,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题描述

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

00000

00001

00010

00011

00100

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

输入格式

本试题没有输入。

输出格式

输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出

00000 00001 00010 00011 <以下部分省略> 思路:         输出0到31的二进制数。

#include <iostream>
#include <string>
using namespace std;
int main()
{
  int i,j;
  string str = "00000";
  for(i = 0; i < 32; i++)
  {
    cout << str << endl;
    str[4] += 1;
    for(j = 4; j >= 0; --j)   //模拟二进制加法
    {
      if(str[j] == '2')
      {
        str[j-1] += 1;
        str[j] = '0';
      }
    }
  }
  return 0;
}

方法2:用位运算实现

#include <iostream> 
using namespace std;

int main()
{
	int i, j, k;
	string s = "00000"; 
	for(i = 0; i < 32; i++)
	{
		for(j = 0, k = 4; j < 5; j++, k--)
		{
			s[k] = '0' + ((i >> j) &  1);
	    } 
	    cout << s << endl;
	}
	return 0;
}