如何实现生成只由0,1组成的任意长度的所有序列,例如长度为2的序列:00,01,10,11共四个,长度为3的话有9个
展开全部
二进制数知道吧,如果是1位二进制数,其取值是0和1;如果是两位二进制数,其取值是00 01 10 11即十进制0 1 2 3,这正好是你所需要的。
你的程序可以先输入这个位数,比如,n=10,
然后生成10位全是1的二进制数据,方法是:for ( i=0,k=0;i<n-1;i++,k<<=1 ) k|=1;
然后顺序输出二进制各位即可,方法是:
for ( j=0;j<=k+1;j++ )
{
for ( i=0,m=j;i<n;i++,m>>=1 )
printf("%d",m&1);
printf(" ");
}
printf("\n");
另外,长度为3的应该是8个而不是9个。
你的程序可以先输入这个位数,比如,n=10,
然后生成10位全是1的二进制数据,方法是:for ( i=0,k=0;i<n-1;i++,k<<=1 ) k|=1;
然后顺序输出二进制各位即可,方法是:
for ( j=0;j<=k+1;j++ )
{
for ( i=0,m=j;i<n;i++,m>>=1 )
printf("%d",m&1);
printf(" ");
}
printf("\n");
另外,长度为3的应该是8个而不是9个。
展开全部
//简单写了一段你看看吧,不理解可追问
#include <stdio.h>
void print(int out, int len)
{
int i,mod;
for(i = 0; i < len; i++)
{
mod = 1<<(len-i-1);
printf("%d",(out/mod)%2);
}
printf("\n");
}
int main()
{
int input,max,i;
puts("请输入序列长度:");
scanf("%d",&input);
max = 1<<input;
for(i = 0; i < max;i++)
print(i,input);
return 0;
}
#include <stdio.h>
void print(int out, int len)
{
int i,mod;
for(i = 0; i < len; i++)
{
mod = 1<<(len-i-1);
printf("%d",(out/mod)%2);
}
printf("\n");
}
int main()
{
int input,max,i;
puts("请输入序列长度:");
scanf("%d",&input);
max = 1<<input;
for(i = 0; i < max;i++)
print(i,input);
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询