欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

字符串 非暴力for循环法(内附C语言代码)

程序员文章站 2024-01-26 11:04:10
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是: 00000 00001 00010 00011 00100...

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


00000

00001

00010

00011

00100

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

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

输出格式

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

样例输出

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


除非实在做不出来,不然我一般不会看题目自带的锦囊的,这也导致我在看到网上的“标准答案”的时候大吃一惊

 

先讲锦囊和网上几乎全部的解,就是五层for循环每个数字,想知道的朋友随便百度就行了

 

我自己看到这个题的时候,可能因为上过网络基础的课,第一反应就是本题是考察我们对二进制的理解

输出32行就是0-31的排序输出二进制(直到看到网上的代码前我也一直这样认为)

因为本题比较简单我这样说思路上应该能理解了,我就直接贴我的代码吧

#include
#include                                   /*转换二进制函数头文件*/
int main()
{
	int i;
	char Binary[6];				    /*转换储存数组,多生命一个存放结束符*/
	for(i=0;i<32;i++)
	{
		itoa(i,Binary,2);		    /*第一个参数是要转换的数,第二个是储存的数组,第三个是转换的进制*/
		printf("%05s\n",Binary);            /*不够5个数的前面补0*/
	}
	return 0;
}

本题暴力for循环和二进制排序各有优点,有些刚学C的可能记不住二进制的头文件和函数,但是暴力for循环只是很简单的逻辑算法