top1编程
← 返回题目
题解

【入门】10进制转D进制

1 条题解

  • 0
    @ 2026-7-28 22:09:18
    #include<bits/stdc++.h>  
    using namespace std;
    int main()
    {
        long long n;  
        int d;// d:目标转换进制(2/8/16)
        cin >> n >> d; 
        stack<char> s; // s:存放取余得到的字符
        if(n == 0) {
            // 特殊情况:十进制数为0,直接入栈字符'0'
            s.push('0');
        }else{
            long long t = n; // t:临时变量,保存当前待计算数值
            while(t!=0){
                int r = t % d;//除d取余
                char c;           // c:余数转换后的对应字符
                if(r < 10){
                    c = '0' + r; // 余数0~9直接转为对应数字字符
                }else{
                    c = 'A' + (r - 10); // 余数10~15转为A~F
                }
                s.push(c); // 转换后的字符入栈
                t /= d;    // 更新为整除后的结果,继续循环
            }
        }
        // 栈后进先出,依次取出栈顶元素输出
        while(!s.empty()){
            cout << s.top();// 取栈顶字符
            s.pop();// 弹出栈顶元素
        }
        return 0;
    }
    
    • 1