C语言十进制转八进制

以下程序错在那#include "stdio.h"
#include "math.h"
main()
{

int i,n=0,o=0,j=0;
scanf("i=%d\n",&i);
if(i<=7) o=i;
else
{

while(i>7)
j=i%8;
i=i/8;
o=j*pow(10,n)+o;
n++;
}

o=o+i*pow(10,n);

printf("o=%d\n",o);
}

清高手指点

现在我一共给你三个答案:
1递归的,
2你原先改成的,
3一般的
**********************************************************************
/*如你所愿写个递归的*/
#include<stdio.h>
r8(int a)
{
int i,j;
if(a==0)
return (0);
else
{
j=a%8;
i=a/8;
r8(i);
printf("%d",j);
}
}

int main()
{
int n;
printf("请输入十进制数:");
scanf("%d",&n);
printf("转换成八进制数是:");
r8(n);
printf("\n");
}
**********************************************************************
原先代码修改的:
#include "stdio.h"
#include "math.h"
main()
{
int i,n=0,o=0,j=0;
scanf("%d",&i); /*改成*/
if(i<=7)
o=i;
else
{
while(i>7)
{ /*加括号*/
j=i%8;
i=i/8;
o=j*pow(10,n)+o;
n++;
} /*加括号*/
}
o=o+i*pow(10,n);
printf("o=%d\n",o);
}
**********************************************************************
另外,转八进制可以这样写
#include "stdio.h"
int main()
{
int d;
printf("请输入十进制数:");
scanf("%d",&d);
printf("该数的八进制表示为:%o\n",d);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-29

#include<stdio.h>

void main()

char *p,s[6];int n;

p=s;

gets(p);

n=0;

while(*(p)!='\0')

{n=n*8+*p-'0';

p++;}

printf("%d",n);

}

扩展资料:

一、二进制数转换

二进制数转换成十进制数

由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。例1105把二进制数110.11转换成十进制数。

二、十进制数转换为二进制数

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

1、十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,

如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2、十进制小数转换为二进制小数

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

参考资料:

百度百科——十进制

第2个回答  2009-03-29
要是我,我准钻空子

先使用itoa转成字符串
然后atoi,这个第三个参数可以设置进制
第3个回答  2019-09-13
先转化到2进制,再到8进制

C语言程序怎么把十进制的数转换成八进制的数?
C语言程序十进制的数转换成八进制的数的办法:include <stdio.h>#include <math.h>void main(){int n,a,sum = 0,i =0;printf("十进制输出一个数n\\n");scanf("%d",&n);while(n){a = n%8;n = n\/8;sum += a*pow(10,i);i++;}printf("八进制输出sum:%d",sum);} ...

C语言十进制怎么转换八进制,求详细描述,不要编译器运行的结果?_百度...
十进制转任意进制一般都是用除基取余法,比如说102转8进制,102除以8,商12,余6 12除以8,商1,余4 1除以8,商0,余1 商为0的时候即转换完成,将余数逆序连接起来就是结果,即10进制的102转8进制为146 将上述过程转为代码就是 include <stdio.h> int main(){ int number = 102, i=0,...

用c语言的函数调用如何将一个十进制数转换为八进制数?
10进制转换8进制输出,使用printf函数的格式输出%o即可。如果需要得到转换后的字符串,使用sprintf函数即可。例程:include <stdio.h>int main (){ int x; char s[100]; printf("输入要转换的十进制数:\\n"); scanf("%d",&x); sprintf(s,"%o",x); \/\/十进制转换为八进制,并保存到...

用C语言把十进制转换为8进制,最好用栈结构
void dec2oct(int x) \/\/将十进制数x转化为8进制数输出 {if(x>7)dec2oct(x\/8); \/\/如果 x 不止一位8进制数,则先处理其高位部分 printf("%d",x%8); \/\/递归返回时再输出 x 的最低位 } int main(){int x;scanf("%d",&x); \/\/读入要转换的十进制数x dec2oct(x)...

c语言“把十进制数转换成八进制数”怎么写
include<stdio.h>#include<string.h>main(){int i,m,n,s=0,t=1;char a[100],b[100]; gets(a);\/\/用回车分割 scanf("%d%d",&n,&m); \/\/输入的进制和想要转换的进制 for(i=strlen(a)-1;i>=0;i--)\/\/先转10进制 {if(n!=16) s+=(a[i]-48)*t;else s+=(a[i]-55)*...

用C语言进行十进制和八进制的转换怎么做
如果输入是十进制字符串,输出是八进制字符串,则用如下dec2oct函数可实现转换 include<stdio.h>int dec2oct(char *dec,char *oct){ int num=0,i=0,t; char c; do{ c=*dec; if(!c) return 0; \/\/ 出错了,没找到10进制数 if(c>='0' && c<='9') break; ...

c语言十进制怎么换成八进制例如010
把10进制的数除以8,然后不断把它的商除以8,最后把他们的余数倒序排列就行了.比如10进制数20.20\/8=2---4 2\/8=0---2 余数倒序排列,所以20的八进制就是24

如何用c语言实现十进制数与八进制数的互换?
八进制转十进制\\n");ch=getchar();switch(ch){ case '1':printf("请输入一个十进制数:");scanf("%d",&x);printf("%d的八进制为%o\\n",x,x);break;case '2':printf("请输入一个八进制数:");scanf("%o",&x);printf("%o的八进制为%d\\n",x,x);break;default:break;} } ...

C语言十进制转八进制
printf("请输入十进制数:");scanf("%d",&n);printf("转换成八进制数是:");r8(n);printf("\\n");} 原先代码修改的:include "stdio.h"include "math.h"main(){ int i,n=0,o=0,j=0;scanf("%d",&i); \/*改成*\/ if(i<=7)o=i;else { while(i>7){ \/*加括号*\/ j=i%8...

C语言十进制转八进制
程序如下 include<stdio.h> void main(){ int x,i,a[8];printf("输入需要转换的十进制整数:");scanf("%d",&x);i=0;while(x%8&&i<8){ a[i]=x%8;x=x\/8;i++;} i=i-1;printf("\\n对应的八进制整数是:");for(;i>=0;i--)printf("%d",a[i]);printf("\\n");} ...

相似回答