问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
答案:
#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;
}
这道题输出01的字符串,联想到2进制,第五位是n除以2的4次方的2求余,类似第4位则是2的3次方的2求余,第一位就是2求余
因为每位不是0就是1,所以还可以暴力解答,运用5个for,循环变量由0到1
#include<stdio.h>
int main()
{
int i,j,k,l,n;
for(i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
for(l=0; l<2; l++)
for(n=0; n<2; n++)
printf("%d%d%d%d%d\n",i,j,k,l,n);
return 0;
}