需要有关此程序的帮助,以获得简单的十进制到八进制转换器。我正在使用Code :: Blocks 16.01 IDE和GNU GCC Compiler。
77的输入应该产生115但是我得到114.“oct = oct + rem * pow(10,p);”没有始终如一地产生正确的输出。它有时会少一些。这可能是math.h标题的链接器问题吗?不知道还有什么要检查。
谢谢。
#include <stdio.h>
#include <math.h>
int main()
{
int n1,n2,rem,oct,p;
printf("Enter any number: ");
scanf("%d",&n1);
n2=n1;
p=oct=0;
while (n1>0)
{
rem = n1 % 8;
n1 = n1 / 8;
oct = oct + rem * pow(10,p);
++p;
}
printf("The octal equivalent of %d is %d\n", n2,oct);
return 0;
}
答案 0 :(得分:0)
当我使用Ideone(https://ideone.com/dLdg0W)时,它给了我115。
我可能错了,但我知道不会重新使用pow功能。相反,你应该尝试用另一种方式计算功率。我能想到的最好的方法是使p存储功率,而不是指数(10,而不是1)。
#include <stdio.h>
#include <math.h>
int main() {
int n1,n2,rem,oct,p;
printf("Enter any number: ");
scanf("%d",&n1);
n2=n1;
oct=0;
p = 1;
while (n1>0) {
rem = n1 % 8;
n1 = n1 / 8;
oct = oct + rem * p;
p *= 10;;
}
printf("The octal equivalent of %d is %d\n", n2,oct);
return 0;
}
立即检查