返回
让你爽到爆:C++ 轻松搞定 504. 七进制数
后端
2023-10-21 13:21:21
作为一名 C++ 程序员,你可能遇到过这样的问题:如何将一个七进制数转换成十进制数?或者,如何将一个十进制数转换成七进制数?别担心,本篇刷题日记将为你揭开七进制数的奥秘,并提供清晰的算法讲解和 C++ 代码实现。
七进制数转换
七进制转十进制
七进制数转换成十进制数的算法很简单:
- 将七进制数的每一位数字乘以相应的权重。
- 将所有乘积相加。
例如,七进制数 1234567 转换为十进制数的步骤如下:
- 1 * 7^6 = 1 * 117649
- 2 * 7^5 = 2 * 16384
- 3 * 7^4 = 3 * 2401
- 4 * 7^3 = 4 * 343
- 5 * 7^2 = 5 * 49
- 6 * 7^1 = 6 * 7
- 7 * 7^0 = 7 * 1
将所有乘积相加,得到 1234567 的十进制值为 5,298,073。
十进制转七进制
十进制数转换成七进制数的算法也很简单:
- 将十进制数不断除以 7,并记录余数。
- 将余数按逆序排列,得到七进制数。
例如,十进制数 5,298,073 转换为七进制数的步骤如下:
- 5,298,073 ÷ 7 = 756868,余数 1
- 756868 ÷ 7 = 108123,余数 6
- 108123 ÷ 7 = 15446,余数 1
- 15446 ÷ 7 = 2206,余数 4
- 2206 ÷ 7 = 315,余数 1
- 315 ÷ 7 = 45,余数 0
- 45 ÷ 7 = 6,余数 4
- 6 ÷ 7 = 0,余数 6
将余数按逆序排列,得到 5,298,073 的七进制值为 1641061。
C++ 代码实现
#include <iostream>
using namespace std;
// 七进制转十进制
int octalToDecimal(int octalNumber) {
int decimalNumber = 0;
int base = 1;
while (octalNumber > 0) {
decimalNumber += (octalNumber % 10) * base;
octalNumber /= 10;
base *= 7;
}
return decimalNumber;
}
// 十进制转七进制
int decimalToOctal(int decimalNumber) {
int octalNumber = 0;
int base = 1;
while (decimalNumber > 0) {
octalNumber += (decimalNumber % 7) * base;
decimalNumber /= 7;
base *= 10;
}
return octalNumber;
}
int main() {
// 七进制数 1234567 转换为十进制数
int octalNumber = 1234567;
int decimalNumber = octalToDecimal(octalNumber);
cout << "七进制数 " << octalNumber << " 转换为十进制数为 " << decimalNumber << endl;
// 十进制数 5,298,073 转换为七进制数
decimalNumber = 5298073;
octalNumber = decimalToOctal(decimalNumber);
cout << "十进制数 " << decimalNumber << " 转换为七进制数为 " << octalNumber << endl;
return 0;
}
总结
希望这篇刷题日记对您有所帮助。通过学习七进制数的转换算法并实现 C++ 代码,您已经掌握了七进制数转换的技巧。如果您还有其他问题,请随时留言。