Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538498
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-19 12:34:26

    应用递归的方法实现一个数制转化器,它可以将输入的二进制转化为十进制表达。
    我们可以这样去设计程序,当输入一个字符时,进行递归的进行调用,然后在每次返回的时候,进行数值的换算。根据此道理进行程序的设计。
  1. #include <stdio.h>
  2. #include <math.h>

  3. biToDe(int n, int *sum, int *m)
  4. {
  5.   char c;
  6.   scanf("%c",&c);
  7.   if(c != '#'){
  8.     *m += 1;
  9.     biToDe(n+1, &(*sum), &(*m));
  10.   }
  11.   if(c == '1')
  12.     *sum += pow(2,(*m)-n-1);
  13. }

  14. int main(int argc, char *argv[])
  15. {
  16.   int sum = 0, m = 0;
  17.   printf("please input a binary number ending for '#'\n");
  18.   biToDe(0,&sum,&m);
  19.   printf("the decimal digit is\n");
  20.   printf("%d\n",sum);

  21.   return 0;
  22. }
程序执行结果:
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

阅读(2277) | 评论(0) | 转发(0) |
0

上一篇:数字翻译器

下一篇:谁在说谎

给主人留下些什么吧!~~