以下程序错在那#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);
}
清高手指点
#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乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
参考资料:
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");} ...