| #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;
 
 }
 |