| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7473 人关注过本帖, 1 人收藏
标题:如何实现一个二进制输出的程序
只看楼主 加入收藏
tomlee36
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-2-22
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:9 
如何实现一个二进制输出的程序
大家好:
我想实现这样的程序,当输入一个实数n时,会以此输出二进制数。
例如:
n=2
输出:
00
01
10
11

n=3时,
输出
000
001
010
011
100
101
110
111
搜索更多相关主题的帖子: 二进制 
2011-02-25 11:34
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:3 
LZ有什么思路,不妨说一说。

小代码,大智慧
2011-02-25 11:39
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:3 
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int a,b=0,c,d,i;
scanf("%d",&a);
clrscr();
for(i=a-1;i>=0;i--)
{
b=b+pow(2.0,i);
}
for(i=0;i<=b;i++)
{
 c=i;
 while(1)
 {
  d=c%2;
  printf("%d",d);
  c=c/2;
  if(c==0)
  break;
 }
 printf("\n");
}
}
输出格式不对   先存在数组里在输出估计应该可以  呵呵  就是方法太不好了  等高手的好方法吧


粗心是大敌
2011-02-25 12:22
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
main()
{
int a[20]={0},b,i,c,j;
scanf("%d",&b);
while(c!=b)
{
c=0;
 for(i=b-1;i>=0;i--)
 {
  if(a[i]==2)
  {
   a[i]=0;
   a[i-1]=a[i-1]+1;
  }
 }
 for(i=0;i<b;i++)
 {
  printf("%d",a[i]);
  c=c+a[i];
 }
printf("\n");
a[b-1]=a[b-1]+1;
}
}
改了一下   比上边那个好点  呵呵

粗心是大敌
2011-02-25 12:50
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
按你输入的那个数  用0和1 输出它的全排列  对吧

                                         
===========深入<----------------->浅出============
2011-02-25 13:05
Amy_huyier
Rank: 4
等 级:业余侠客
帖 子:46
专家分:265
注 册:2011-1-24
收藏
得分:3 
如果是整数很容易的。因为整数在内存中就是按二进制存放的。直接用位运算可以把内存中每个0/1取出来输出就行了。

如果是实数,整数部分可按上面方法。小数部分,目前我想到的就是用传统的乘2法

[ 本帖最后由 Amy_huyier 于 2011-2-25 13:55 编辑 ]
2011-02-25 13:53
cacker
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-25 15:44
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:3 
我也写了一个,大家看看。
int i, j, n;

scanf("%d", &n);
for(i = 0; i < (1<<n); i++)
{
    for(j = 1<<(n-1); j > 0; j /= 2)
        printf("%d ", !!(i & j));
    printf("\n");
}

[ 本帖最后由 犬虫门心 于 2011-2-25 16:14 编辑 ]
收到的鲜花
  • 点线面2011-02-25 16:35 送鲜花  10朵   附言:分享有趣东西,值得加分

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-25 16:13
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:0 
回复 8楼 犬虫门心
程序代码:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int main()
{
    int i, j, n;

    scanf("%d", &n);
    for(i = 0; i < (1<<n); i++)
   {
       for(j = 1<<(n-1); j > 0; j = j>>1)
        printf("%d ", !(i & j));
       printf("\n");
    }

           getchar();
           getchar();

           return 1;
}
不错的算法

小代码,大智慧
2011-02-25 16:29
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
以下是引用犬虫门心在2011-2-25 16:13:15的发言:

我也写了一个,大家看看。
int i, j, n;

scanf("%d", &n);
for(i = 0; i < (1<<n); i++)
{
    for(j = 1<<(n-1); j > 0; j /= 2)
        printf("%d ", !!(i & j));
    printf("\n");
}

还没学到位运算, 先收藏。。。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-25 16:31
快速回复:如何实现一个二进制输出的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021727 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved