发个话题大家讨论讨论(数的进制转换)
将一个N进制数转换成M进制数。(Kingsoft金山公司C/C++笔试题)程序代码:
#include <iostream> #include <vector> using namespace std; void convert(int x, int n, int m) { vector vi; int y; while(x) { y = x % m; vi.push_back(y); x /= m; } vector::reverse_iterator rit = vi.rbegin(); for( ; rit!=vi.rend(); rit ) { if( *rit >= 10 ) { char temp = *rit - 10 'A'; cout << temp; } else { cout << *rit; } } } void convert(const char *str, int n, int m) { if(*str == '\0') return; int x = 0; int y; while(*str != '\0') { x *= n; if((*str>='0') && (*str<='9')) { y = *str - '0'; } else if( (*str>='A') && (*str<='F') ) { y = 10 *str - 'A'; } else if( (*str>='a') && (*str<='f') ) { y = 10 *str - 'a'; } else { cout << "error input" << endl; return; } if( y>=n ) // n进制数字不能大于n { cout << "error input" << endl; return; } x = y; str ; } convert(x, n , m); } int main(void) { convert(1234, 10, 16); return 0; }
[ 本帖最后由 秀痘魔导士 于 2010-2-22 15:51 编辑 ]