#include<math.h>
#include<fstream.h>
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
int form,num;
char word[100];
s1:cout<<"你输入的数制是(阿拉伯字母,10或2或8或16):"<<endl;
cin>>form;
if(form!=2&&form!=10&&form!=8&&form!=16)
{
cout<<"err"<<endl;
goto s1;
}
else
{
cout<<"输入数的位数为:"<<endl;
cin>>num;
cout<<"请输入需要处理的数:"<<endl;
cin>>word;
}
char quan[100];
int sum=0;
int g;
strcpy(quan,word);
for(int x=0;x<num;x++)
{
if (quan[x]<='9'&&quan[x]>='0')
quan[x]=quan[x]-48;
if (quan[x]<='F'&&quan[x]>='A')
quan[x]=quan[x]-55;
}
//开始转换成十进制数
for( int a=0;a<num;a++)
{
g=(int) pow(form,(num-1-a));
sum=sum+(quan[a])*g;
}
cout<<"该数的十进制形式为:"<<sum<<"D"<<endl;
//计算该数的十进制数形式
char yushu2[100];
int p=0;
p=sum;//开始转换成2进制数
int b;
for(int j=0;j<100&&sum!=0;j++,sum=sum/2)
{
yushu2[j]=(char)(sum%2+48);
yushu2[j+1]='\0';
}
int m=strlen(yushu2);
cout<<"该数的二进制数形式为:";
for(b=m-1;b>=0;b--)
{
cout<<yushu2;} //计算该数的二进制数形式
cout<<"B"<<endl;
char yushu8[100];
int q=0;
q=p;
int d;//开始转换成8进制数
for(int c=0;c<100&&p!=0;c++,p=p/8)
{
yushu8[c]=(char)(p%8+48);
yushu8[c+1]='\0';
}
int n=strlen(yushu8);
cout<<"该数的八进制数形式为:";
for(d=n-1;d>=0;d--)
{
cout<<yushu8[d];}
cout<<"Q"<<endl;
char yushu16[100];
int r=q;//开始转换成16进制数
for(int e=0;e<100&&q!=0;e++,q=q/16)
{
if (q%16<=9&&q%16>=0)
yushu16[e]=(char)(q%16+48);
if (q%16<=15&&q%16>=10)
yushu16[e]=(char)(q%16+55);
yushu16[e+1]='\0';
}
int o=strlen(yushu16);
cout<<"该数的十六进制数形式为:";
for(int f=o-1;f>=0;f--)
{
cout<<yushu16[f];
}
cout<<"H"<<endl;
// return 0;
} |