#include <stdio.h>
#include <math.h>
void p1(int n)//10#->2#
{
int a[10],i=0;
while(n!=0)
{
a[i++]=n%2;
n=n/2;
}
for(i=i-1; i>=0; i--)
printf("%d",a[i]);
printf("
");
}
void p2(int n)//10#->8#
{
int a[10],i=0;
while(n!=0)
{
a[i++]=n%8;
n=n/8;
}
for(i=i-1; i>=0; i--)
printf("%d",a[i]);
printf("
");
}
void p3(int n)//10#->16#
{
int a[10],i=0;
while(n!=0)
{
a[i++]=n%16;
if(a[i-1]>=10)
a[i-1]=a[i-1]-10+65;
n=n/16;
}
for(i=i-1; i>=0; i--)
if(a[i]>=10)
printf("%c",a[i]);
else
printf("%d",a[i]);
printf("
");
}
//////////////////////////////////////////////
void q1()//2#->10#
{
int i,j,sum=0,n;
char a[20];
printf("请入入你要转换的数:
");
scanf("%s",&a);
for(i=0; a[i]!=' '; i++)
{
sum=sum*2+a[i]-'0';
}
printf("%d
",sum);
}
void q2()//8#->10#
{
int i=0,j,sum,a[10],n;
printf("请入入你要转换的数:
");
scanf("%d",&n);
while(n!=0)
{
a[i++]=n%10;
n=n/10;
}
sum=0;
j=i;
for(i=0; i<j; i++)
sum+=(int)pow(8,i)*a[i];
printf("%d
",sum);
}
void q3()//16#->10#
{
int i=0,sum=0;
char b[20];
printf("请输入要转换的数:
");
scanf("%s",&b);
for(i=0; b[i]!=' '; i++)
{
if(b[i]>='A'&&b[i]<='F')
sum=sum*16+b[i]-55;
else
sum=sum*16+b[i]-'0';
}
printf("%d
",sum);
}
///////////////////////////////////////////////////
int main()
{
int n,m,a;
printf("---------------计算器------------------
");
printf("请选择:
");
printf("1、10#->2#、10#->8#、10#->16#
2、2#->10#、8#->10#、16#->10#
");
scanf("%d",&n);
if(n==1)
{
printf("请选择:
1、10#->2# 2、10#->8# 3、10#->16#
");
scanf("%d",&m);
printf("请输入一个十进制数:
");
scanf("%d",&a);
switch(m)
{
case 1:
p1(a);
break;
case 2:
p2(a);
break;
case 3:
p3(a);
break;
default:
printf("输入错误!
");
}
}
else if(n==2)
{
printf("请选择:
1、2#->10# 2、8#->10# 3、16#->10#
");
scanf("%d",&m);
switch(m)
{
case 1:
q1();
break;
case 2:
q2();
break;
case 3:
q3();
break;
default:
printf("输入错误!
");
}
}
else
printf("输入错误!
");
return 0;
}