zhuaizhai 2024-03-20 20:10 采纳率: 90.5%
浏览 1
已结题

(标签-C++|关键词-十六进制)

C++利用顺序栈将一个非负的十进制整数N转换为对应的十六进制数。非负的十进制整数N从键盘输入,转换结果从屏幕输出。
进制转换思想:
在较复杂的数据处理过程中,通常需要保存多个临时产生的数据。如果先产生的数据后进行处理,那么需要用栈来保存这些数据。十进制整数转换为N进制整数采用"除N取余,逆序排列“法。
具体做法是:
将N作为除数,用十进制整数除以N,可以得到一个商和余数;保留余数,用商继续除以N,又得到一个新的商和余数;
仍然保留余数,用商继续除以N,还会得到一个新的商和余数;
如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。
输入说明: 输入一个十进制数
输出说明:输出对应的十六进制数
输入样例1:10
输出样例1:A

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-03-20 20:10
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题解答: 思路分析: 1.将十进制数N不断除以16,得到商和余数,将余数存入栈中,直到商为0停止; 2.从栈顶开始,不断取出余数,将其转换为对应的十六进制字符,并输出,直到栈为空停止。 代码实现:
    #include<iostream>
    #include<stack>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        stack<char> s;
        while(n!=0)
        {
            int r=n%16;  // 求余数
            n/=16;      // 求商
            if(r<=9) s.push(r+48);   // 0-9
            else s.push(r+55);       // A-F
        }
        while(!s.empty())
        {
            cout<<s.top();  // 输出栈顶元素
            s.pop();        // 弹出栈顶元素
        }
        cout<<endl;
        return 0;
    }
    

    输入样例: 10 输出样例: A

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月20日