Code :: Blocks转换器计算

时间:2018-01-18 18:52:02

标签: c calculation

需要有关此程序的帮助,以获得简单的十进制到八进制转换器。我正在使用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;

}    

1 个答案:

答案 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;
}   

立即检查