给定一个n?进制数?a,请你将它转换为?m 进制并输出。
特别的,令?A,B,C,…,Z 表示高进制下的?10~35;
以下为代码:(自己编的可能有些麻烦)
#include <stdio.h> #include <string.h> #include <math.h> int main() { ?? ?char ch[100]; ?? ?char a[100]; ? ? int n,m; ? ? long long b=0; ? ? scanf("%s%d%d",ch,&n,&m); ? ? int len=strlen(ch); ? ? int i; ?? ?long long y[100];long long y1[100]; ? ? for (int i3 = 0; i3 < 100; i3++) ?? ?{?? ?? ??? ??? ?y[i3] = 1,y1[i3]=1; ?? ?} ? ?? ? ? for(i=0;i<len;i++) ?? ?{ ?? ??? ?if(ch[i]>=48&&ch[i]<=57) ?? ??? ?{ ?? ??? ??? ?int i1; ?? ??? ??? ? ?? ??? ??? ?for(i1=0;i1<len-i-1;i1++) ?? ??? ??? ?y[i]=y[i]*n; ?? ??? ?b+=(ch[i]-48)*y[i]; ?? ??? ? ?? ??? ?} ?? ??? ?else ?if(ch[i]>=65&&ch[i]<=90) ?? ??? ?{ ?? ??? ??? ?int i2; ?? ??? ??? ? ?? ??? ??? ?for(i2=0;i2<len-i-1;i2++) ?? ??? ??? ?y1[i]=y1[i]*n; ?? ??? ? ?? ??? ?b+=(ch[i]-55)*y1[i];} ?? ?}?? ? ?? ?int j=0; ?? ?long long b1=b; ?? ?while(b>0) ?? ?{ ?? ??? ?a[j]=b%m;
?? ??? ?b/=m; ?? ??? ?j++; ?? ?? ?}
?? ?int k=0; ?? ?while(b1>0) ?? ?{ ?? ? ?? ??? ?if(a[j-k-1]<10) ?? ??? ?printf("%c",a[j-k-1]+48); ?? ??? ?else if (a[j-k-1]>9) ?? ??? ?printf("%c",a[j-k-1]+55); ?? ??? ?b1/=m; ?? ??? ?k++; ?? ?} ?? ? ?? ? ?? ??? ??? ? ?? ?return 0; }
|