c语言bcd码转十进制

Python012

c语言bcd码转十进制,第1张

不知道我的理解对不对,这个问题,就是把一个整数还原成16进制数的表示方式,而这个十六进制数实际上表示的就是十进制数,所以我们只要把输入的数转换成十六进制表示就行了,但是有一个问题,其实需要注意的就是输入的时候10-15

其实是不能输入了,因为刚好就是A-F,所以不妨让输入值>=16

<=15

对于这个范围的数

其实只要两步就行了,第一,除以16取余数,对应的是各位上的数,除以16取整数商,对应的就是十位数,应该这样就可以

void

main(){

int

a

cin>>a

if(a<16||a>153)cout<<"不符合输入规则"<<endl

else{

int

c=a%16

int

b=a/16

int

abc=

b*10+c

cout<<abc<<endl

}

}

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define INPUT_BCD_MAX_LENGTH 10

int main(void)

{

    //

    char bcd[ INPUT_BCD_MAX_LENGTH ]

    char *bin = NULL

    char t_bin[ 6 ]

    int i, j, q, r, t, bcd_len, bin_len

    printf( "Please enter the decimal code: " )

    scanf("%s", bcd)

    

    bcd_len = strlen( bcd )

    bin_len = bcd_len * 6 + 1

    bin = ( char * )malloc( bin_len )

    memset( bin, 0, bcd_len * 6 + 1 )

    for( i = 0 i < bcd_len i++ )

    {

        /* 把字符转换为数字*/

        q = bcd[ i ] - '0'

        //将每个十进制转换为四位二进制

        for( j = 0 j < 4 j++ )

        {

            t = q / 2

            r = q % 2

            q = t

            if( q == 0 && r != 1 )

            {

                t_bin[ j ] = '0'

            }

            else

            {

                //把数字转换为字符

                t_bin[ j ] = r + '0'

            }

        }

        t_bin[ j ] = ' '

        t_bin[ j + 1 ] = '\0'

        strrev( t_bin )

        strcat( bin, t_bin )

    }

 

    printf( "BCD coded decimal:\n%s\n", bin )

    free( bin )

    bin = NULL

 

    system("pause")

    return 0

}