对于长度为 5 位的一个 01 串,每一位都可能是 0 或 1,一共有 32 种可能
。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这 32 种 01 串。
输入格式
本试题没有输入。
输出格式
输出 32 行,按从小到大的顺序每行一个长度为 5 的 01 串。
解题思路
方法1:解答这道题最简单的方法是运用枚举法,将每一种可能用for循环输出
#include<stdio.h>
int main()
{
int a,b,c,d,e;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
for(d=0;d<=1;d++)
for(e=0;e<=1;e++)
printf("%d%d%d%d%d\n",a,b,c,d,e);
return 0;
}
方法2:根据二进制的规律,因为它有5位数,所以根据二进制规则,对应从左往右分别是24, 23,22,21,20, 从左往右在相应的位数除以它们的指数再取余。
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 32; i++)
printf("%d%d%d%d%d\n", i/16%2, i/8%2, i/4%2, i/2%2, i%2);
return 0;
}