如果你知道FFFFFFF的十进制数是268435455,并且int的范围是2147483647的话,此题可以直接水过。我初始看到此题还是懵了下怕转换的中间值十进制会超过范围...多虑了。
学弟问的,代码基本上没变
#include<stdio.h>
#include<string.h>
int main()
{
char s[150],t[8];
int i,a,b,su,j,d,l,r,w;
while(scanf("%s%d%d",s,&a,&b)!=EOF)
{
d=1;l=0;su=0;w=1;
for(i=strlen(s)-1,j=1;i>=0;i--)
{
if(s[i]<='9'&&s[i]>='0')
r=s[i]-'0';
else if(s[i]>='A'&&s[i]<='F')
r=s[i]-'A'+10;
su+=r*j;
j=j*a;
}
i=0;
while(su)
{
j=su%b;
if(j<=9&&j>=0)
j+='0';
else if(j>9&&j<=16)
j=j-10+'A';
t[i++]=j;
su/=b;
}
if(i>7) {printf(" ERROR\n"); continue;}
for(j=0;j<7-i;j++)
printf(" ");
for(j=i-1;j>=0;j--)
printf("%c",t[j]);
printf("\n");
}
return 0;
}