| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8953 人关注过本帖
标题:这是一个将十进制数转化为二进制数的程序
只看楼主 加入收藏
赤壁男儿
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-12-26
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:16 
这是一个将十进制数转化为二进制数的程序
#include<stdio.h>
int transform(int dnum,int *bin);
void inv(int *a,int length);
void myoutput(int *a,int length);
main()
{
    int k,m,*q,l;
    q=&l;
    printf("请输入一个十进制的数\n");
    scanf("%d",&k);
    m=transform(k,q);
    inv(q,m);
    printf("转化后的数是\n");
    myoutput(q,m);
}
int transform(int dnum,int *bin)
{
    int i=0,b=1;
    int a[100];
    bin=a;
    a[i]=dnum%2;     //将第一次的余数存储在a[0]中;
    i=1;
    while(b!=0)
    {
        b=dnum/2;//整数求商
        a[i]=b%2;求余数
        i++;
    }
    return i-1;
}
void inv(int *a,int length)
{
    int *p,*q,temp;
    p=a;q=a+length-1;
    for(;p<=q;q--,p++)
    {
        temp=*p;
        *p=*q;
        *q=temp;
    }
}
void myoutput(int *a,int length)
{
    int i;
    for(i=0;i<length;i++)
        printf("%3d",*(a+i));
}
//十进制转化为二进制数
//这个程序有问题,但不知道那里有错误
搜索更多相关主题的帖子: 十进制 二进制数 
2010-03-30 22:23
浊浪滔滔
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2010-3-24
收藏
得分:0 
用不用这么麻烦啊!
2010-03-31 12:16
赤壁男儿
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-12-26
收藏
得分:0 
那请您给一个答案把!
2010-03-31 12:22
llooppzhang
Rank: 7Rank: 7Rank: 7
来 自:江苏
等 级:黑侠
威 望:5
帖 子:308
专家分:518
注 册:2009-10-18
收藏
得分:0 
不错喔。
2010-03-31 12:34
shaojila8888
Rank: 2
等 级:论坛游民
帖 子:9
专家分:27
注 册:2010-3-29
收藏
得分:0 
第一 你这个程序的注释写的不好 我无法知道 你的每个函数的功能是什么
     所以 也不知道你的思路是什么?
第二 在你求余数或者除的时候 最好前面加个 (int)类型,毕竟你要的事整数 如
         while(b!=0)
    {
        b=(int)(dnum/2);//整数求商
        a[i]=(int)(b%2);求余数
        i++;
    }
    在把每个函数的 注释写好后 在发一次吧 然后我在给你看下
2010-03-31 14:27
赤壁男儿
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2009-12-26
收藏
得分:0 
#include<stdio.h>
int transform(int dnum,int *bin);
void inv(int *a,int length);
void myoutput(int *a,int length);
main()
{
    int k,m,*q,l;
    q=&l;
    printf("请输入一个十进制的数\n");
    scanf("%d",&k);
    m=transform(k,q);
    inv(q,m);
    printf("转化后的数是\n");
    myoutput(q,m);
}
int transform(int dnum,int *bin)//我的思路是降第一次的余数存储在数组的第一个位置,再求第一次除以2后到商。再利用循环重复上面操作。知道商为零。
{
    int i=0,b=1;
    int a[100];
    bin=a;
    a[i]=dnum%2;     //将第一次的余数存储在a[0]中;
    i=1;
    while(b!=0)
    {
        b=dnum/2;//整数求商
        a[i]=b%2;求余数
        i++;
    }
    return i-1;
}
void inv(int *a,int length)//根据二进制数转化为十进制的特点,再将数组中的数倒置过来即为所求二进制数
{
    int *p,*q,temp;
    p=a;q=a+length-1;
    for(;p<=q;q--,p++)
    {
        temp=*p;
        *p=*q;
        *q=temp;
    }
}
void myoutput(int *a,int length)//输出逆制后的数组
{
    int i;
    for(i=0;i<length;i++)
        printf("%3d",*(a+i));
}
//十进制转化为二进制数
//这个程序有问题,但不知道那里有错误

2010-03-31 15:00
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
程序代码:
#ifdef __cplusplus
extern "C" {
#endif 

#include <stdio.h> 

int main()
{
    char number[32 + 1];    // magic number, just for taking example simply.
    unsigned long N;
    unsigned long mask = 1ul;
    scanf("%u", &N);
    // transfer to binary
    for (int i = 31; i >= 0; i--, mask <<= 1)
    {
        number[i] = (N & mask) ? '1' : '0';
    }
    // end of transfer
    number[32] = '\0';
    printf("%s\n", number);
    getchar();
    getchar();
    return 0;
} 

#ifdef __cplusplus
}
#endif
给个位运算的版本。。。

[ 本帖最后由 succubus 于 2010-3-31 15:22 编辑 ]

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-03-31 15:07
shaojila8888
Rank: 2
等 级:论坛游民
帖 子:9
专家分:27
注 册:2010-3-29
收藏
得分:0 
int *transform(int dnum)//输入 10进制后 才里面进行 转换2进制操作后 返回的时候 直接是 以整形数组返回就行。
                            觉得你那个 第二个 形参没什么用
{
    static i =0;
    int b=1, j;
    int *p; //用于 存储 2进制转换后的值
    int a[100];
    while(dnum/2!=0)
    {
        a[i]=(int)dnum%2;//我直接把 第一个的余数也 考虑进去了
        dnum=(int)dnum/2;//我觉的 你的代码错就错在这, 因为你第一 除2后 应该要用 所得的 商 在进行 除2
                    但你的 b=dnum/2的话 b的值 始终是不变的 所以这里你错了  
        i++;
    }
    j=i;
    for(j=0;j<i;j++)
    {*(p+j) = a[j]} //吧 数组的值 赋值给 *p
    return *p; //不知道 这么写返回值 对不对
}
//我的思路 大概就是 这样了。 觉的你的  b=dnum/2;是错误的, 我这里 没有VC无法给你 测试
  我只能帮到这了 之后就靠你了!
2010-03-31 17:37
学无止尽
Rank: 1
来 自:广西南宁
等 级:新手上路
帖 子:7
专家分:1
注 册:2010-3-31
收藏
得分:0 
楼上的师兄们好厉害`什么时候我才能加入你们的探讨队伍呢``好羡慕你们

韬光养晦 厚积薄发
2010-03-31 18:23
阿邋
Rank: 2
等 级:论坛游民
帖 子:84
专家分:41
注 册:2009-3-6
收藏
得分:0 
7楼的for循环体,有点看不懂.谁给解释一下呀!!

我并不具有我想要的一切,只是我所有的都是我想要的!
2010-03-31 19:01
快速回复:这是一个将十进制数转化为二进制数的程序
数据加载中...
 
   



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

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