返回

让你爽到爆:C++ 轻松搞定 504. 七进制数

后端

作为一名 C++ 程序员,你可能遇到过这样的问题:如何将一个七进制数转换成十进制数?或者,如何将一个十进制数转换成七进制数?别担心,本篇刷题日记将为你揭开七进制数的奥秘,并提供清晰的算法讲解和 C++ 代码实现。

七进制数转换

七进制转十进制

七进制数转换成十进制数的算法很简单:

  1. 将七进制数的每一位数字乘以相应的权重。
  2. 将所有乘积相加。

例如,七进制数 1234567 转换为十进制数的步骤如下:

  1. 1 * 7^6 = 1 * 117649
  2. 2 * 7^5 = 2 * 16384
  3. 3 * 7^4 = 3 * 2401
  4. 4 * 7^3 = 4 * 343
  5. 5 * 7^2 = 5 * 49
  6. 6 * 7^1 = 6 * 7
  7. 7 * 7^0 = 7 * 1

将所有乘积相加,得到 1234567 的十进制值为 5,298,073。

十进制转七进制

十进制数转换成七进制数的算法也很简单:

  1. 将十进制数不断除以 7,并记录余数。
  2. 将余数按逆序排列,得到七进制数。

例如,十进制数 5,298,073 转换为七进制数的步骤如下:

  1. 5,298,073 ÷ 7 = 756868,余数 1
  2. 756868 ÷ 7 = 108123,余数 6
  3. 108123 ÷ 7 = 15446,余数 1
  4. 15446 ÷ 7 = 2206,余数 4
  5. 2206 ÷ 7 = 315,余数 1
  6. 315 ÷ 7 = 45,余数 0
  7. 45 ÷ 7 = 6,余数 4
  8. 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++ 代码,您已经掌握了七进制数转换的技巧。如果您还有其他问题,请随时留言。