字符串 非暴力for循环法(内附C语言代码)
程序员文章站
2022-05-24 19:03:46
对于长度为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串。样例输出
0000000001
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循环只是很简单的逻辑算法
上一篇: 决策树的python实现方法