进制间的转换。。。主要是题目有限制数大小范围只会是7位,因此int就够了。。。
故可以先转换为十进制,再转换成相应的进制
#include<stdio.h>
#include<string.h>
int get10(char s[],int a)
{
int l,i,sum=0;
l=strlen(s);
for(i=0;i<l;i++)
if(s[i]>='A'&&s[i]<='F')sum=sum*a+s[i]-'A'+10;
else
sum=sum*a+s[i]-'0';
return sum;
}
void getx(int value,int b)
{
int a[10],t=0,i;
while(value)
{
if(t>=7)
{
printf(" ERROR\n");
return ;
}
a[t++]=value%b;
value/=b;
}
for(i=t;i<7;i++)printf(" ");
for(i=t-1;i>=0;i--)
if(a[i]>=10)printf("%c",a[i]-10+'A');
else
printf("%d",a[i]);
printf("\n");
}
int main()
{
char s[20];
int old,newb,value;
while(scanf("%s%d%d",s,&old,&newb)!=EOF)
{
value=get10(s,old);
if(value)getx(value,newb);
else
printf(" 0\n");
}
return 0;
}