#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
}
不知道我的理解对不对,这个问题,就是把一个整数还原成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
}
}