输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。 数据可能存在包含前导零的情况。
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。
15 Aab3 7
210306
#include <stdio.h>
#include <string.h>
int main() {
int a;char b[20];int c;
while (scanf("%d %s %d", &a, b,&c) != EOF) {
long x=0;char y[20];
for(int i=0;i<strlen(b);i++){
if(b[i]>='0'&&b[i]<='9') x=x*a+(int)(b[i]-'0');
else if (b[i]>='a'&&b[i]<='f') x=x*a+(int)(b[i]-'a'+10);
else x=x*a+(int)(b[i]-'A'+10);
}
int i=0;
while(x!=0){
int sub=x%c;
if(sub<10)y[i]='0'+sub;
else y[i]='A'+sub-10;
x=x/c;i++;
}
for(int i=strlen(y)-1;i>=0;i--)printf("%c",y[i]);
printf("\n");
}
return 0;
} 为啥我样例13输出有乱码‘@�14320512’?但自己debug没问题,输出正确‘14320512’