C 编程:十进制到八进制

问题描述 投票:0回答:1
// Decimal into octalenter image description here
#include <stdio.h>
#include <math.h>

int main()
{
    int num, r = 0, octal, i = 1;

    printf("Enter the number you want to convert into ocal form: ");
    scanf("%d", &num);

    while (num) 
    {                                   // num = 123    // num = 15     // num = 1
        r = num % 8;                    // r = 3        // r = 7        // r = 1
        octal = octal + r * pow(10, i); // octal = 3    // octal = 73   // octal = 173
        i++;                            // i == 1       // i = 2        // i = 3
        num = num / 8;                  // num = 15     // num = 1      // num = 0
    }
    printf("Octal equivalent is %d",  octal);
    return 0;
}

// output
Enter the number you want to convert into ocal form: 16
Octal equivalent is 2396360

输出不是它必须的。我认为我正确地应用了逻辑,但是...... 不知怎的,答案是出乎意料的,我不知道我的错误。

c numbers date-conversion
1个回答
0
投票

您没有初始化

octal
,并且将
i
初始化为1。它们都应该初始化为0。

使用

pow
来计算 10 的整数次幂也是一个坏主意。(因为它很浪费,而且因为
pow
的某些实现很糟糕并且不会返回准确的结果。)只需在 1 处启动一个正在运行的乘积,然后每次迭代中将其乘以 10。

© www.soinside.com 2019 - 2024. All rights reserved.