应用递归的方法实现一个数制转化器,它可以将输入的二进制转化为十进制表达。
我们可以这样去设计程序,当输入一个字符时,进行递归的进行调用,然后在每次返回的时候,进行数值的换算。根据此道理进行程序的设计。
- #include <stdio.h>
-
#include <math.h>
-
-
biToDe(int n, int *sum, int *m)
-
{
-
char c;
-
scanf("%c",&c);
-
if(c != '#'){
-
*m += 1;
-
biToDe(n+1, &(*sum), &(*m));
-
}
-
if(c == '1')
-
*sum += pow(2,(*m)-n-1);
-
}
-
-
int main(int argc, char *argv[])
-
{
-
int sum = 0, m = 0;
-
printf("please input a binary number ending for '#'\n");
-
biToDe(0,&sum,&m);
-
printf("the decimal digit is\n");
-
printf("%d\n",sum);
-
-
return 0;
-
}
程序执行结果:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
please input a binary number ending for '#'
11111#
the decimal digit is
62
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
please input a binary number ending for '#'
110#
the decimal digit is
6
阅读(2286) | 评论(0) | 转发(0) |