标签:大写 har upper code break long 字母 void oid
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。
输入输入只有一行,包含三个整数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
1 void conversion( char s[], long d1, long d2 ) 2 { 3 long i=0, j, t, num; 4 char s2[100]; 5 char c; 6 num = 0; 7 for ( i = 0; s[i] != ‘\0‘; i++ ) 8 { 9 if ( s[i] <= ‘9‘ && s[i] >= ‘0‘ ) 10 t = s[i] - ‘0‘; 11 else t = toupper(s[i]) - ‘A‘ + 10; 12 num = num * d1 + t;//先转换为10进制 13 } 14 i = 0; 15 while (true) 16 { 17 t = num % d2;//一直取余,而后除 18 if ( t <= 9 ) 19 s2[i] = t + ‘0‘; 20 else s2[i] = t + ‘A‘ - 10; 21 num /= d2; 22 if ( num == 0 ) 23 break; 24 i++; 25 } 26 for (int k = i; k >=0; k--) 27 cout<<s2[k]; 28 29 }
标签:大写 har upper code break long 字母 void oid
原文地址:https://www.cnblogs.com/BlairGrowing/p/12663837.html