// 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
输出不是它必须的。我认为我正确地应用了逻辑,但是...... 不知怎的,答案是出乎意料的,我不知道我的错误。
您没有初始化
octal
,并且将i
初始化为1。它们都应该初始化为0。
使用
pow
来计算 10 的整数次幂也是一个坏主意。(因为它很浪费,而且因为 pow
的某些实现很糟糕并且不会返回准确的结果。)只需在 1 处启动一个正在运行的乘积,然后每次迭代中将其乘以 10。