代碼如下:
#include <stdio.h> #include <math.h> #include <string.h> char zimu[]="0123456789ABCDEF"; int main() { char str[10]; int re[10]; int a,b,length,i,sum,j; memset(re,0,10); memset(str,0,10); while(scanf("%s%d%d",str,&a,&b)!=EOF) { sum=0; length=strlen(str); for (i=length-1;i>=0;i--) { if (str[i]>='A'&&str[i]<='F') { sum=sum+(str[i]-'A'+10)*(int)pow(a,length-1-i); } else { sum=sum+(str[i]-'0')*(int)pow(a,length-1-i); } } i=0; while(sum>0) { re[i]=sum%b; sum=sum/b; i++; } if (i>7) { printf(" ERROR"); } else { for (j=i;j<7;j++) { printf(" "); } for (j=i-1;j>=0;j--) { printf("%c",zimu[re[j]]); } } printf("\n"); memset(re,0,10); memset(str,0,10); } return 0; }