蓝桥杯 基础练习之01字串

01字串

资源限制

时间限制:1.0 s 内存限制:256.0 MB

问题描述

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

00000

00001

00010

00011

00100

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

输入格式

本试题没有输入。

输出格式

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

样例输出

00000
00001
00010
00011
<以下部分省略>

思路

  1. 憨憨一点,直接打表,全部写出来再输出
  2. 利用五层for循环,每一层输出一个0或1,共有 2 5 2^5 种可能
  3. 利用已有的标准库函数 #include <bitset>
  4. 将十进制整数转换位二进制字符串,再根据长度判断其是否需要补0
    • 可以使用函数 #include <stdlib.h> 中的 itoa() 函数
    • 手动完成十进制整数到二进制整数的转换

代码

方案一:打表

32行输出一个一个输出吧

方案二:五层for循环
#include<iostream>
using namespace std;

int main(){
	for (int i=0;i<2;i++)
	for (int j=0;j<2;j++)
	for (int k=0;k<2;k++) 
	for (int t=0;t<2;t++) 
	for (int p=0;p<2;p++)
	cout<<i<<j<<k<<t<<p<<endl;
    
	return 0;
}

方案三:bitset方法

#include<iostream>
#include<bitset>
using namespace std;
int main(){
	for (int i=0;i<32;i++){
		bitset<5> res;
		 res = i;
		 cout << res <<endl;
	}
	return 0;
}

方案四:itoa()方法自动转换位二进制字符串
#include<iostream>
#include <stdlib.h>
using namespace std;

int main(){
	
	char strs[100];
	for (int i = 0; i < 32; i++) {
		string str = itoa( i, strs, 2 );
		switch (str.length()) {
		case 1:
			str = "0000" + str;
			break;
		case 2:
			str = "000" + str;
			break;
		case 3:
			str = "00" + str;
			break;
		case 4:
			str = "0" + str;
			break;
		}
		cout << str << endl;
	}
	return 0;
	
} 
方案四:手写二进制转换
#include<iostream>
#include<bitset>
#include <stdlib.h>

using namespace std;

//手写二进制
string trans(int n){
	string str[2]={"0","1"};
	string res="";
	if (n==0) return res+"0";
	while(n){
		res=str[n%2]+res;
		n/=2;
	}
	return res;
	
}
int main(){
	int n=32;
	for (int i=0;i<n;i++){
		string str = trans(i);
		switch (str.length()) {
		case 1:
			str = "0000" + str;
			break;
		case 2:
			str = "000" + str;
			break;
		case 3:
			str = "00" + str;
			break;
		case 4:
			str = "0" + str;
			break;
		}
		cout<<str<<endl;
	}
	return 0;
}

总结

为什么我要写这么多呢,主要是为了熟悉C++标准库和非标准库函数的用法,比如字符串和十进制整数的相互转换(还有stirngtream),以及十进制整数到其他进制数的转换等。

参考博客

C++ int与string的转化

发布了9 篇原创文章 · 获赞 1 · 访问量 85

猜你喜欢

转载自blog.csdn.net/Lurker_hunter/article/details/104560001