| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4368 人关注过本帖
标题:弱弱的问一道题:怎样用递归算法写一个将二进制转换为十进制的程序?
只看楼主 加入收藏
zhangguol
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
弱弱的问一道题:怎样用递归算法写一个将二进制转换为十进制的程序?
怎样用递归算法写一个将二进制转换为十进制的程序?谢谢
还有请推荐一些讲递归算法的文章或视频,这个我弄不大懂
搜索更多相关主题的帖子: 递归 十进制 算法 二进制 
2009-11-25 14:35
NoSoul
Rank: 9Rank: 9Rank: 9
来 自:沈阳化工大学
等 级:蜘蛛侠
帖 子:283
专家分:1010
注 册:2009-6-6
收藏
得分:3 
N进制转为10进制.
#include<stdio.h>
#include<string.h>
long b2ten(char *x,int b){
    int i,num,ret=0;
    int len=strlen(x);
    for(i=0;i<len;i++){
        if(x[i]>='A'&&x[i]<='Z')
            num=x[i]-'A'+10;
        if(x[i]>='0'&&x[i]<='9')
            num=x[i]-'0';
        ret*=b;
        ret+=num;
    }
    return (long)ret;
}
int main()
{
    int n,m;
    char p[8];
    long pA;
    scanf("%d",&n);
    while(n--){
        scanf("%s%d",p,&m);
        pA=b2ten(p,m);
        printf("%d\n",pA);
    }
    return 0;
}

我想伸手拉近點,竟觸不到那邊,就欠一點點,但這一點點...卻好遠
2009-11-25 15:25
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:3 
//任意进制之间的转换······
#include <stdio.h>
#include <string.h>
void ttor(int n, int r)
{
    if (n)     
    {   
        ttor(n/r,r);
        printf("%c", n%r>9? n%r-10+'A': n%r+'0');
    }
}
int main()
{
    int n; int r;
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        if (!n)
            putchar('0');
        if(n<0)
            putchar('-'),n=-n;
        ttor(n,r);
        putchar('\n');
    }

return 0;
}
2009-11-29 23:10
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
//任意进制之间的转换······
#include <stdio.h>
#include <string.h>
void ttor(int n, int r)
{
    if (n)     
    {   
        ttor(n/r,r);
        printf("%c", n%r>9? n%r-10+'A': n%r+'0');
    }
}
int main()
{
    int n; int r;
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        if (!n)
            putchar('0');
        if(n<0)
            putchar('-'),n=-n;
        ttor(n,r);
        putchar('\n');
    }

return 0;
}
2009-11-29 23:11
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
额···似乎搞错了········
2009-11-29 23:18
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:3 
二进制转换为十进制   。。。。 用的是递归。。。。  不过二进制是以int 输入 的 ,不能太大··这是个局限。。只是提供个思路。。
LZ能看懂我这个的话。。递归也算大致掌握了····
程序代码:
#include<stdio.h>
int bin_to_ten(int bin)
{
    int ten = bin%2;
    if(!(bin/=10))
        return ten;
    return ten += 2*bin_to_ten(bin); 
}
int main()
{
    int bin;
    printf("请输入一个二进制数:");
    scanf("%d",&bin);
    printf("%d",bin_to_ten(bin));
    return 0;
}
2009-11-30 12:43
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
楼上的很精简····顶
2009-11-30 13:06
Happy_ZhangX
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2009-11-30
收藏
得分:3 
之前回答的没递归啊

6楼正解
2009-11-30 13:35
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:3 
#include<stdio.h>
#include<string.h>
#include<math.h>
int binToTen(char *s)
{
    int i,len=strlen(s);
    i=(*s=='1'?1:0);
    if(len==1)
    {
        return i;
    }
    return i*pow(2,len-1)+binToTen(s+1);
}
void main()
{
    char a[20];
    scanf("%s",a);
    printf("%d\n",binToTen(a));
}

顺境逆境切莫止境,得意失意切莫在意。
2009-11-30 14:11
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:3 
一:都没考虑正负数;

二:都没考虑二进制小数的情况;

三:大数程序暂不考虑。
2009-11-30 17:31
快速回复:弱弱的问一道题:怎样用递归算法写一个将二进制转换为十进制的程序?
数据加载中...
 
   



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

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