c编程中的十进制到八进制转换(使用代码块)

时间:2017-03-04 13:49:19

标签: c

十进制到八进制转换c。使用代码块16.01.转换工作到63.这是我第一次在这里发帖

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// conversion of decimal to octal
int main()
{
    int num,sum,count,x,y;
    printf("enter a number\t");
    scanf("%d",&num);
    count = 0;
    sum = 0;
    while (num>0){
        x=num%8;
        x=x*pow(10,count);
        count=count+1;
        num=num/8;
        sum=sum+x;
    }
    printf("\n%d",sum);





    return 0;
}

2 个答案:

答案 0 :(得分:0)

    #include <stdio.h>
    #include <stdlib.h>

    // conversion of decimal to octal
    int main()
    {
        int num,i,len=0,x[100];
        printf("enter a number\t");
        scanf("%d",&num);

        while (num>0){
            x[len]=num%8;
            num=num/8;
            len++;
        }
        for(i=len;i>=0;i--)
            printf("\n%d",x[i]);
        return 0;
   }

这适用于从十进制到八进制的转换。

注意:检查逻辑是否有效!。使总和long int。 63之后int无法再接听答案。

答案 1 :(得分:0)

如果您打开某些警告,编译器实际上会报告代码问题,但问题是您隐式地从double转换为int,并且根据实施情况,您失去精确度。 pow会返回double,但您将其存储在intx

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// conversion of decimal to octal
int main()
{
    int num,sum,count,x,y;
    printf("enter a number\t");
    scanf("%d",&num);
    count = 0;
    sum = 0;
    while (num>0){
        x=num%8;
        x=x*pow(10,count);
       /* ^^^^^^^^^^^^^^^^ problem here */
        count=count+1;
        num=num/8;
        sum=sum+x;
    }
    printf("\n%d",sum);





    return 0;
}

现在修复

不应该使用库pow,而应该只实现你自己的整数(因为你知道你只使用整数)

/* a trivial implementation */
long pow10(int  n) {

      long result = 1;
      while(n--) {
          result *= 10;
      }
      return result;
}

现在稍微清理程序:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

long pow10(int  n);

/* a trivial implementation */
long pow10(int  n) {

    long result = 1;
    while(n--) {
          result *= 10;
    }
    return result;
}

int main()
{
    int num, count;
    long sum, x;
    printf("enter a number\t");
    scanf("%d",&num);
    count = 0;
    sum = 0;
    while (num>0){
        x=num%8;
        x=x*pow10(count);
        count=count+1;
        num=num/8;
        sum=sum+x;
    }
    printf("\n%ld",sum);
    return 0;
}