题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是:
000000
000001
000010
000011
000100
请按从小到大的顺序输出这64种01串。
输入输出格式
输入描述:
输出描述:
输出64行,每行一个01串。
方法一:暴力枚举。。。(这个就不用多说了吧)
方法二:六层循环
#include<stdio.h>
int main()
{
for(int a=0;a<2;a++)
for(int b=0;b<2;b++)
for(int c=0;c<2;c++)
for(int d=0;d<2;d++)
for(int e=0;e<2;e++)
for(int f=0;f<2;f++)
printf("%d%d%d%d%d%d\n",a,b,c,d,e,f);
return 0;
}
方法三:将这些数看做是(十进制对二进制)的转换而来的
首先,你得了解十进制对二进制的转换过程,代码如下:
#include<stdio.h>
int main()
{
int f[10];
int x,rem,i=0;
scanf("%d",&x);
while(x)
{
rem=x%2;
x/=2;
f[i++]=rem;
}
while(i>0)
{
printf("%d",f[--i]);
}
return 0;
}
--------我是分割线----------
有了转换的基础,题目就很容易了:
#include<stdio.h>
int func(int x)
{
int i,f[6];
for(i=0;i<6;i++)
{
f[i]=x%2;
x/=2;
}
for(i=5;i>=0;i--)
{
printf("%d",f[i]);
}
}
int main()
{
int i;
for(int i=0;i<64;i++)
{
func(i);
printf("\n");
}
return 0;
}
好了,看到这里基本上这章就结束啦。如果您觉得这期内容对你有帮助的话,欢迎点赞,评论,收藏,谢谢啦。