输入只有一行,包含三个整数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’