POJ 3255 十进制到六进制

时间限制: 
1000ms
内存限制: 
65536kB
描述
进制转换: 将十进制(不超过int类型表示的范围)的数转换为六进制的数.
输入
输入为第一行是组数n,后面n行是需要进制转换的十进制数.
输出
进制转换后的n行六进制数。
样例输入
31346265
样例输出
211141121
 
(1)、源代码:
#include <iostream>
#include <stack>
#include <cmath>
using namespace std;
 
void change(int data){
                stack<int>s;
                if(0 == data)
                                cout << "0";
                else if(data < 0){
                                int temp = abs(data);
                                while(0 != temp){
                                                s.push(temp%6);
                                                temp /= 6;
                                }
                                cout << "-";
                                while(!s.empty()){
                                                cout << s.top();
                                                s.pop();
                                }
                }
                else{
                                while(0 != data){
                                                s.push(data%6);
                                                data /= 6;
                                }
                                while(!s.empty()){
                                                cout << s.top();
                                                s.pop();
                                }
                }
                cout << endl;
}
 
int main(){
                int i, n, num;
                cin >> n;
 
                for(i = 0; i < n; i++){
                                cin >> num;
                                change(num);
                }
    return 0;
}
  
(2)、解题思路:略
(3)、可能出错:注意0和负数。
posted on 2012-05-02 22:07  谷堆旁边  阅读(368)  评论(0编辑  收藏  举报