使用用户定义函数将十进制转换为八进制的 C++ 程序


2023年2月1日, Learn eTutorial
1460

在这个 C++ 程序中,我们必须使用一个函数将一个十进制数转换为其八进制数。

十进制和八进制数

  • 十进制数是基数为 10 的数。这意味着,我们必须使用 0 到 9 来表示一个数。
  • 八进制数是基数为 8 的数字系统。这意味着它总共有 8 位数字来表示一个数,从 0 到 7。

十进制到八进制转换

要将十进制转换为八进制,我们必须将十进制数除以八进制数字系统的基数,即 8。让我们举个例子来清楚地理解它。以 204 作为我们想要转换为八进制数的十进制数。这里我们首先将数字 204 除以 8,得到 25 作为结果,4 作为余数,现在再次将 25 除以 8。继续除,直到数字小于除数,这里是 8。
204/8 商= 25,余数= 4;
25/8 商=3,余数= 1;
将数字除尽或得到小于 8 的余数后,停止除法并从最后一个余数开始向前写。这里我们得到 314 作为结果,也就是给定十进制数 204 的八进制值。

如何编写一个 C++ 程序将数字从十进制转换为八进制?

要求用户输入一个十进制数。将该数字存入变量 decimalNum 中;定义一个函数来计算与输入的十进制数对应的八进制数。

void DecimalToOctal(int);

这里,函数将十进制数作为其参数,并将其转换为等效的八进制值。


void DecimalToOctal(int decimalNum)
{
   while(decimalNum != 0)
   {
      octalNum[i] = decimalNum%8;
      i++;
      decimalNum = decimalNum/8;
   }
}


当函数被调用时,`while 循环`的条件被评估。即条件 **decimalNum!=0** 被评估为真,因此程序流程进入循环。在那里,**decimalNum%8** 被初始化为 **octalNum[i]**。**i** 的值递增。**decimalNum/8** 被初始化为 **decimalNum**。现在程序控制返回并再次用变量 **decimalNum** 的新值评估 `while 循环` 条件。继续评估 `while 循环` 的过程,直到其条件评估为假。我们必须从最后一个索引到第 0 个索引打印 **octalNum[]** 的值。因此,使用 `for 循环`,我们从 i-1 开始打印 **octalNum[]** 的值,直到第 0 个索引。

算法

步骤 1: 调用头文件 iostream.

步骤 2: 使用 `namespace std.`。

步骤 3: 声明用户定义函数 void DecimalToOctal(int);

步骤 4: 打开整数类型的主函数;int main()。

步骤 5: 声明整数类型变量 decimalNum

步骤 6: 要求用户输入一个十进制数

步骤 7:将数字存入变量 decimalNum 中;

步骤 8: 调用函数 DecimalToOctal(int decimalNum)
             找到 decimalNum 的余数并将其存储在数组 octalNum[i] 中;
             通过将 decimalNum/8 赋值给 decimalNum 来更新其值并继续。

步骤 9: 打印函数返回的值

步骤 10::退出

C++ 源代码

                                          #include<iostream>
using namespace std;
void DecimalToOctal(int);
int octalNum[50];
static int i;
int main()
{
    int decimalNum;
    cout<<"Enter any Decimal number: ";
    cin>>decimalNum;
    DecimalToOctal(decimalNum);
    cout<<"\nEquivalent Octal Value = ";
    for(i=(i-1); i>=0; i--)
        cout<<octalNum[i];
    cout<<endl;
    return 0;
}
void DecimalToOctal(int decimalNum)
{
    while(decimalNum != 0)
    {
        octalNum[i] = decimalNum%8;
        i++;
        decimalNum = decimalNum/8;
    }
}
                                      

输出

Enter any Decimal number: 365
Equivalent Octal Value = 555