c 用递归写一个2进制换十进制的程序

作者在 2009-07-10 06:51:17 发布以下内容
#include<stdio.h>
#include<string.h>
#define N 33

long two_ten( const char * ,int);
long num;

int main(void)
{
    char str[N];
    long ten;
   
    while(1)
    {   
        num=0;
        fgets(str,N,stdin);
        if(str[0]=='0')
        {
            printf("ten=0\n");
            break;
        }
        str[strlen(str)-1]='\0';
        ten= two_ten(str,strlen(str)-1);
        printf("ten=%ld\n",ten);
    }
   
    return 0;
}

long two_ten( const char *str,int len)
{
    int i;
    int tmp;
   
    if(*str=='\0')
    {
        return num;
    }
    if(*str!='0')
    {
        tmp=1;
        for(i=0;i<len;++i)
        {
            tmp*=2;
        }
        num+=tmp;
    }
    two_ten(str+1,len-1);
}
我参与过的话题 | 阅读 1692 次
文章评论,共0条
游客请输入验证码

DMS
浏览22293次
文章归档