zoukankan      html  css  js  c++  java
  • 十进制与二进制的转换

    题目:分别编写把十进制整数转化为二进制和把二进制整数转化为十进制整数的函数,并编写主程序调用它们,以验证其正确性。

    【算法】:将十进制整数转化为二进制整数的算法是:将十进制数除以2,得到一个商数和一个余数;再将商数除以2,又得到一个商数和一个余数;继续这个过程,直到商数为0为止。每次得到的余数(必定是01)就是对应二进制的各位数字。最后一次得到的余数为二进制的最高位,第一次得到的为二进制的最低位。

    将二进制数转化为十进制数的算法是:将二进制数的各位数字乘以2n次方再相加,其中n等于相应二进制数数字的位序号(从该整数的末位数起)减1;这样得到的和就是所求的十进制数。

    【流程图】

    shi_zhuan_er的流程图

    i=0并定义静态数组a[24]

    输出提示(printf("将十进制数转化为二进制数: ");

    n>0

     

    k=n%2;n=(n-k)/2;a[i]=k;i++;

    i=23

     

    输出a[i] (printf("%d",a[i]);)

    i=i1

    换行

    Return

    er_zhuan_shi的流程图:

    m0

    输出提示(printf("将二进制数转化为十进制数: ");

    i=0

    i<=n

    k=n-I-1;m=a[i]*pow(2,k)+m;

    i=i+1

    输出m (printf("%d",m);)

    Return

    主函数因简单,流程图省略。

    【程序清单】:

    /*5.c*/

    #include"stdio.h"

    #include"math.h"

    void shi_zhuan_er(int n)

    {int k;int i=0;

    static int a[24];

    printf("将十进制数转化为二进制数: ");

    while (n>0)

    {k=n%2;n=(n-k)/2;a[i]=k;i++;}

    for(i=23;i>=0;i--)

    printf("%d",a[i]);

    printf(" ");

    return;

    }

     

    void er_zhuan_shi(int a[],int n)

    {int k,i; int m=0;

    printf("将二进制数转化为十进制数: ");

    for(i=0;i<=n-1;i++)

    {k=n-i-1;m=a[i]*pow(2,k)+m;}

    printf("%d",m);

    return;

    }

     

    void main()

    {char c;int n,i;int a[24];

    printf(" 十进制转化为二进制还是二进制转化为十进制(s&e): ");

    scanf(" %c",&c);

    if (c=='s')

    {printf("输入数据: ");scanf("%d",&n);

    shi_zhuan_er(n);

    }

    else if (c=='e')

    {printf("输入数据的位数: ");

    scanf ("%d",&n);

    printf("输入数据(请输入一个数字后加空格分隔): ");

    for(i=0;i<n;i++) scanf("%d",&a[i]);

    er_zhuan_shi(a,n);

    }

    }

    【运行结果】

    十进制转化为二进制还是二进制转化为十进制(s&e):

    s

    输入数据:

    123

    将十进制数转化为二进制数:

    000000000000000001111011

    再次运行:

    十进制转化为二进制还是二进制转化为十进制(s&e):

    e

    输入数据的位数:

    6

    输入数据(请输入一个数字后加空格分隔):

    1 0 1 0 1 1

    将二进制数转化为十进制数:

    43

  • 相关阅读:
    【vijos】1768 顺序对的值(特殊的技巧)
    【vijos】1789 String(组合计数+奇怪的题)
    【vijos】1790 拓扑编号(拓扑+贪心)
    【vijos】1629 八(容斥原理+dfs)
    【vijos】1543 极值问题(数论+fib数)
    【vijos】1447 开关灯泡(高精度+特殊的技巧)
    【vijos】1164 曹冲养猪(中国剩余定理)
    【vijos】1882 石阶上的砖(中位数+特殊的技巧)
    【vijos】1881 闪烁的繁星(线段树+特殊的技巧)
    【vijos】1286 座位安排(状压dp)
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/3388915.html
Copyright © 2011-2022 走看看