十二进制是数学中一种以12为底数的计数系统,它由09,a,b组成,与十进制的对应关系是:09对应0~9,a对应10,b对应11。例如,十二进制的a2,十进制是122。输入一个仅含十二进制数字的字符串(字母一律小写,不超过8个字符),完成下列任务:
(1)输出该十二进制数每一位对应的十进制数(从高位到低位顺序输出,空格隔开);
(2)实现“十二进制”转“十进制”算法,输出该十二进制数对应的十进制数;
(3)输出转换后的十进制数在内存中的每个二进制位(共4字节,每字节之间空格隔开)。
输入格式:
输入一个十二进制数(字母一律小写,不超过8个字符)。
输出格式:
第一行输出该十二进制数每一位对应的十进制数(由高位到低位,以空格隔开)
第二行输出该十二进制数对应的十进制数
第三行输出转换后的十进制数在内存中的每个二进制位(共4个字节,每字节之间空格隔开)
输入样例:
a2
输出样例:
10 2
122
00000000 00000000 00000000 01111010
仅供参考,如有错请留言,自当改正!!!
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <string.h>
#include <map>
#include <ctype.h>
#include <algorithm>
using namespace std;
int main()
{
int d=0,c,i,j;
int a[10];
int b[32]={0};
string s;
cin>>s;
int l=s.length();
for(i=0;i<l;i++)
{
if(s[i]>='0'&&s[i]<='9') a[i]=s[i]-'0';
if(s[i]=='a') a[i]=10;
if(s[i]=='b') a[i]=11;
cout<<a[i]<<" ";//每位对应的十进制
c=1;
for(j=1;j<l-i;j++)
{
c*=12;
}
d+=(c*a[i]);//对应十进制数
}
cout<<endl<<d<<endl;
i=31;
while(d)//转变为二进制
{
b[i--]=d%2;
d=d/2;
}
for(i=0;i<32;i++)
{
if(i%8==0&&i!=0) cout<<" ";
cout<<b[i];
}
return 0;
}