2018年华科834机试
输入一个十二进制数(a和b代表10和11),输出该数的十进制,再输出该数的二进制。其中,输出二进制时要每个字节空一格。
示例
输入:
a2
输出:
122
00000000 00000000 0111010
#include <cstdio>
#include <cstring>
#include <math.h>
using namespace std;
int main()
{
char str[100];
while(scanf("%s", str)!=EOF)
{
int numIN10=0;
int len = strlen(str);
for(int i=len-1; i>=0; i--){
if(str[i]=='a'|| str[i]=='A')
numIN10 +=10*pow(12,len-1-i);
else if(str[i]=='b'|| str[i]=='B')
numIN10 +=11*pow(12,len-1-i);
else
numIN10 += (str[i]-'0')*pow(12,len-1-i);
}
printf("%d\n", numIN10); //12进制转10进制
int tmp = numIN10;
int j=0,a[32]={0};
while(tmp){ //10进制转2进制
a[j++]= tmp%2;
tmp = tmp/2;
}
for(int i=31;i>=0;i--){
printf("%d",a[i]);
if(i%8==0)
printf(" ");
}
printf("\n");
}
return 0;
}