1417 二進位制數的大小

請過雪山發表於2020-12-19

題目描述
輸入三個2 進位制的數,要求將這三個二進位制數對應的十進位制整數按從小到大的順序輸。
要求程式定義一個bToD()函式和一個main()函式,bToD() 函式的功能是將二進位制數轉化為十進位制整數,其餘功能在main()函式中實現。
int bToD(char str[])
{
//函式返回二進位制數str對應十進位制整數
}

輸入
輸入三個2 進位制的數,用空格隔開。所有資料均為非負數,二進位制數長度不超過30。

輸出
將對應的十進位制整數按從小到大的順序輸出

樣例輸入
1101 110 1011
樣例輸出
6 11 13

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int bto(char c[])//計算2進位制對應10進位制數值
{
    int i,l,m,s=0;
    l=strlen(c);
    for(i=0;i<l;i++)
    {
        m=c[i]-48;//字元'0'-'9'對應數字48-57
        m=m*pow(2,l-i-1);
        s=s+m;
    }
    return s;
}
int main()
{
    int f[3],m,i,j,c[40];
    for(i=0;i<3;i++)
    {
        scanf("%s",c);
        f[i]=bto(c);
    }
    for(i=0;i<2;i++)//氣泡排序
    {
        for(j=0;j<2-i;j++)
        {
            if(f[j]>f[j+1])
            {
                m=f[j];
                f[j]=f[j+1];
                f[j+1]=m;
            }
        }
    }
    printf("%d %d %d",f[0],f[1],f[2]);
    return 0;
}

相關文章