用C++写出十进制转十六进制的代码
时间: 2023-11-16 14:05:14 浏览: 62
#include <stdio.h>
int main()
{
int decimal, quotient, remainder;
int i = 1, j, temp;
char hexadecimal[100];
printf("Enter a decimal number: ");
scanf("%d", &decimal);
quotient = decimal;
while (quotient != 0)
{
temp = quotient % 16;
if (temp < 10)
temp = temp + 48;
else
temp = temp + 55;
hexadecimal[i++] = temp;
quotient = quotient / 16;
}
printf("Hexadecimal equivalent of %d is: ", decimal);
for (j = i - 1; j > 0; j--)
printf("%c", hexadecimal[j]);
return 0;
}
相关问题
数据结构实验,利用栈实现二进制,八进制,十进制,十六进制之间的转换,写出完整代码
以下是使用栈实现进制转换的完整代码,包括二进制、八进制、十进制和十六进制之间的转换。
```c++
#include <iostream>
#include <stack>
#include <cmath>
using namespace std;
// 将十进制数转换为二进制数
void DecToBin(int n)
{
stack<int> s;
while (n > 0)
{
int remainder = n % 2;
s.push(remainder);
n /= 2;
}
while (!s.empty())
{
cout << s.top();
s.pop();
}
}
// 将十进制数转换为八进制数
void DecToOct(int n)
{
stack<int> s;
while (n > 0)
{
int remainder = n % 8;
s.push(remainder);
n /= 8;
}
while (!s.empty())
{
cout << s.top();
s.pop();
}
}
// 将十进制数转换为十六进制数
void DecToHex(int n)
{
stack<char> s;
while (n > 0)
{
int remainder = n % 16;
if (remainder < 10)
s.push(remainder + '0');
else
s.push(remainder - 10 + 'A');
n /= 16;
}
while (!s.empty())
{
cout << s.top();
s.pop();
}
}
// 将二进制数转换为十进制数
void BinToDec(int n)
{
int decimal = 0;
int base = 1;
while (n > 0)
{
int remainder = n % 10;
decimal += remainder * base;
base *= 2;
n /= 10;
}
cout << decimal;
}
// 将八进制数转换为十进制数
void OctToDec(int n)
{
int decimal = 0;
int base = 1;
while (n > 0)
{
int remainder = n % 10;
decimal += remainder * base;
base *= 8;
n /= 10;
}
cout << decimal;
}
// 将十六进制数转换为十进制数
void HexToDec(string hex)
{
int decimal = 0;
int base = 1;
int len = hex.size();
for (int i = len - 1; i >= 0; i--)
{
if (hex[i] >= '0' && hex[i] <= '9')
decimal += (hex[i] - '0') * base;
else if (hex[i] >= 'A' && hex[i] <= 'F')
decimal += (hex[i] - 'A' + 10) * base;
base *= 16;
}
cout << decimal;
}
int main()
{
int n, choice;
string hex;
cout << "请输入一个整数: ";
cin >> n;
cout << "请选择需要转换的进制:" << endl;
cout << "1. 十进制转二进制" << endl;
cout << "2. 十进制转八进制" << endl;
cout << "3. 十进制转十六进制" << endl;
cout << "4. 二进制转十进制" << endl;
cout << "5. 八进制转十进制" << endl;
cout << "6. 十六进制转十进制" << endl;
cin >> choice;
switch (choice)
{
case 1:
DecToBin(n);
break;
case 2:
DecToOct(n);
break;
case 3:
DecToHex(n);
break;
case 4:
BinToDec(n);
break;
case 5:
OctToDec(n);
break;
case 6:
cout << "请输入一个十六进制数: ";
cin >> hex;
HexToDec(hex);
break;
default:
cout << "无效的选项" << endl;
break;
}
return 0;
}
```
在程序中,我们使用了 STL 中的 `stack` 数据结构,它可以帮助我们方便地实现栈的操作。对于不同的进制转换,我们需要分别实现不同的函数,并在 `main` 函数中根据用户的选择调用相应的函数。对于十六进制转换,由于它包含字母,我们使用了 `stack<char>` 来存储每一位的值。
1.输入任意一个十进制整数,用栈实现将其转换为对应的二进制、八进制和十六进制,并打印输出,要求在devc++下写出代码
将十进制整数转换成二进制、八进制和十六进制,可以使用栈数据结构以及三位一组(对于十六进制)的方式来存储数字。以下是使用Dev-C++编写的一个简单的示例代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
// Function to convert decimal to binary and push it onto the stack
void decToBinary(int num, stack<char>& binStack) {
while (num > 0) {
binStack.push((char)(num % 2 + '0')); // Convert to char and add prefix '0'
num /= 2;
}
}
// Function to convert decimal to octal and push it onto the stack
void decToOctal(int num, stack<char>& octStack) {
for (int i = 0; i < 3; i++) {
int digit = num % 8;
octStack.push((char)(digit + '0'));
num /= 8;
}
reverse(octStack.begin(), octStack.end()); // Reverse the stack since we pushed from right
}
// Function to convert decimal to hexadecimal and push it onto the stack
void decToHexadecimal(int num, stack<char>& hexStack) {
stack<char> tempStack;
for (int i = 0; i < 4; i++) {
int digit = num % 16;
if (digit < 10)
tempStack.push((char)(digit + '0'));
else
tempStack.push((char)(digit - 10 + 'A'));
num /= 16;
}
reverse(tempStack.begin(), tempStack.end());
for (auto it : tempStack)
hexStack.push(it);
}
// Print the stacks
void printStack(stack<char>& stack, string type) {
cout << "Converting to " << type << ": ";
while (!stack.empty()) {
cout << stack.top();
stack.pop();
}
cout << endl;
}
int main() {
int decimalNum;
cout << "Enter a decimal number: ";
cin >> decimalNum;
stack<char> binStack, octStack, hexStack;
decToBinary(decimalNum, binStack);
decToOctal(decimalNum, octStack);
decToHexadecimal(decimalNum, hexStack);
printStack(binStack, "Binary");
printStack(octStack, "Octal");
printStack(hexStack, "Hexadecimal");
return 0;
}
```
当你运行这个程序并输入一个十进制数时,它会输出相应的二进制、八进制和十六进制表示。
阅读全文