C++利用顺序栈将一个非负的十进制整数N转换为对应的十六进制数。非负的十进制整数N从键盘输入,转换结果从屏幕输出。
进制转换思想:
在较复杂的数据处理过程中,通常需要保存多个临时产生的数据。如果先产生的数据后进行处理,那么需要用栈来保存这些数据。十进制整数转换为N进制整数采用"除N取余,逆序排列“法。
具体做法是:
将N作为除数,用十进制整数除以N,可以得到一个商和余数;保留余数,用商继续除以N,又得到一个新的商和余数;
仍然保留余数,用商继续除以N,还会得到一个新的商和余数;
如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。
输入说明: 输入一个十进制数
输出说明:输出对应的十六进制数
输入样例1:10
输出样例1:A
(标签-C++|关键词-十六进制)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注让阿豪来帮你解答,本回答参考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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报