输入n和m,表示两种进制(2~10+26),用‘A’-‘Z’表示11-36,在输入n进制数k,输出其m进制下形式。
样例输入 :2 17 11111
样例输出 :1E
分析:先将n进制的k转换为十进制形式,再转换为m进制形式。
代码如下:
#include<stdio.h>
#include<string.h>
int main(){
int n, m, i, temp, len;
char str[100], str1[100];
scanf("%d%d", &n, &m);
scanf("%s", str1);
len = strlen(str1);
/*将n进制str1转化成十进制temp*/
for(i = temp = 0; i < len; i++)
temp = temp*n + str1[i] - '0';
/*将十进制temp转化成m进制str*/
i = 0;
while(1){
if(temp < m){
str[i] = temp;
if(str[i] >= 10) str[i] += ('A' - 10);
else str[i] += '0';
break;
}
else{
str[i] = temp%m;
if(str[i] >= 10) str[i] += ('A' - 10);
else str[i] += '0';
temp /= m;
}
i++;
}
/*输出*/
for(i = i; i >= 0; i--) putchar(str[i]);
putchar('\n');
return 0;
}