C++程序 实现十进制转八进制

来源:这里教程网 时间:2026-02-16 16:08:43 作者:

C++程序 实现十进制转八进制

给定一个十进制数作为输入,我们需要编写一个程序将给定的十进制数转换为等效的八进制数。即将具有值10的数字转换为具有值8的数字。数字系统的基数确定用于表示数字值的数字数量。例如,二进制数字系统使用两个数字0和1,八进制数字系统使用0-7的8个数字,而十进制数字系统使用10个数字0-9来表示任何数字值。

示例:

输入: 16
输出: 20

输入: 10
输出: 12

输入: 33
输出: 41

算法:

    将数字除以8后的余数存储在一个数组中。现在将数字除以8重复以上两个步骤,直到数字不等于0。现在以相反的顺序打印数组。

例如:

如果给定的十进制数为16。

步骤1: :当16除以8时余数为0。 因此,arr [0] = 0。

步骤2: :将16除以8。新数字为16/8=2。

步骤3: :当2除以8时余数为2。因此,arr [1] = 2。

步骤4: :将2除以8。新数字为2/8 = 0。

步骤5: :由于数字变成= 0。

停止重复步骤并以相反的顺序打印数组。 因此,等效的八进制数字为20。

下面的图示例演示了将十进制数33转换为等效的八进制数。

以下是上述想法的实现。

// C++ program to convert a decimal// number to octal number#include <iostream>using namespace std;// Function to convert decimal // to octalvoid decToOctal(int n){    // Array to store octal number    int octalNum[100];    // Counter for octal number array    int i = 0;    while (n != 0)     {        // Storing remainder in octal array        octalNum[i] = n % 8;        n = n / 8;        i++;    }    // Printing octal number array in     // reverse order    for (int j = i - 1; j >= 0; j--)        cout << octalNum[j];}// Driver Codeint main(){    int n = 33;    // Function Call    decToOctal(n);    return 0;}

输出:

41

时间复杂度:O(log N)

空间复杂度:O(N) ,因为创建包含八进制数字的数组

另一种方法:(O(1)空间复杂度)

也可以使用以下算法在不使用数组的情况下解决此问题:

将八进制数字初始化为0,将countVal初始化为1,将十进制数初始化为n找到十进制数除以8的余数通过octalNum +(余数* countval)更新八进制数字通过countval * 10增加countval将十进制数除以8从第二步开始重复,直到十进制数为零

下面是上述想法的实现:

// C++程序,将十进制数转换成八进制数#include <iostream>using namespace std;  // 计算给定十进制数的八进制值的函数void decimaltoOctal(int deciNum){    // 初始化    int octalNum = 0, countval = 1;    int dNo = deciNum;      while (deciNum != 0)     {        // 计算十进制数的余数        int remainder = deciNum % 8;          // 存储八进制值        octalNum += remainder * countval;          // 存储指数值        countval = countval * 10;        deciNum /= 8;    }    cout << octalNum << endl;}  // 主函数int main(){    int n = 33;      // 调用函数    decimaltoOctal(n);    return 0;}  

输出:

41

时间复杂度: O(log N)

辅助空间: O(1)

使用预定义函数

// C++程序,实现上述方法#include <bits/stdc++.h>using namespace std;  string intToOctal(int n){    stringstream st;    st << oct << n;    return st.str();}  // 主函数int main(){    int n = 43;    cout << intToOctal(n);    return 0;}  

输出:

41

相关推荐