本关任务:利用顺序栈将一个非负的十进制整数N转换为对应的十六进制数。非负的十进制整数N从键盘输入,转换结果从屏幕输出。代码
时间: 2025-06-14 15:16:25 浏览: 22
在C++中,你可以使用顺序栈(通常称为数组实现的栈)配合循环结构和位操作来完成这个任务。这里是一个简单的示例代码:
```cpp
#include <iostream>
#include <stack>
std::string decimalToHex(int N) {
std::stack<char> hexStack;
while (N > 0) {
int remainder = N % 16; // 取余数得到十六进制位
if (remainder < 10) { // 如果小于10,直接用字符表示数字
hexStack.push('0' + remainder);
} else { // 否则用大写字母A-F表示10-15
hexStack.push('A' + remainder - 10);
}
N /= 16; // 除以16取下一个十六进制位
}
// 由于栈顶元素是最低有效位,所以反转字符串
std::string result = "";
while (!hexStack.empty()) {
result += hexStack.top();
hexStack.pop();
}
return result;
}
int main() {
int N;
std::cout << "请输入一个非负的十进制整数: ";
std::cin >> N;
if (N >= 0) {
std::string hex = decimalToHex(N);
std::cout << "对应的十六进制数是: " << hex << std::endl;
} else {
std::cout << "错误,输入值不是非负整数." << std::endl;
}
return 0;
}
```
在这个程序中,我们首先创建一个空的栈,然后用while循环不断取出`N`的十六进制位,并将其压入栈中。最后,由于栈是从下往上存储的,我们需要反转栈里的字符,形成正确的十六进制数。
阅读全文
相关推荐

















