请问这段C语言程序什么意思?是八进制和十进制在转换同?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define TIME 100
#define ENTER 13
#define ESC 27

int main()
{
int x,msb=6,repeat;
char binArray[msb+1];

printf("\n\tOcral to Decimal Converation");
printf("\n\t============================");
printf("\n");
printf("\n\tPlease enter 6-bit Octal value;");
for(x=0;x<msb;x++)
{
do
{
binArray[x]=getche();
if(binArray[x]!='0'&&binArray[x]!='1'&&binArray[x]!='2'&&binArray[x]!='3'&&binArray[x]!='4'&&binArray[x]!='5'&&binArray[x]!='6'&&binArray[x]!='7'&&binArray[x]!=ENTER)
{
printf("\b \b");
repeat=true;
}
else
{
repeat=false;
}
}while(repeat==true);
if(binArray[x]==13)
{
msb=x;
break;
}
}
printf("\n\n\t");
for(x=0;x<msb;x++)
{
putchar(binArray[x]);
_sleep(TIME);
}
printf("Entered value:");
printf("\t\t");getch();
return 0;
}

二进制.八进制.十进制.十六进制.
编程序时
不需要换算。输入的时候
八进制%o
十六进制%x
十进制%d
在计算机都一样是二进制,不影响计算,不存在转换问题。输出的时候,同理用%o,%d,%x输出相应的进制。

(0.56)8=5*8-1+6*8-2=(0.71875)10

(12A)16=1*162+2*161+A*160=(298)10

(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10

十进制整数→→→→→八进制方法:“除8取余”

十进制整数→→→→→十六进制方法:“除16取余” 例如:

(171)10=(253)8

(2653)10=(A5D)16

十进制小数→→→→→八进制小数 方法:“乘8取整”

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0。71875)10=(0.56)8

(0.142578125)10=(0.3C8)16

3.非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

2。二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-20
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define TIME 100
#define ENTER 13
#define ESC 27

int main()
{
int x,msb=6,repeat;
char binArray[msb+1]; //定义字符串,+1是为了存储最后的'\0‘

printf("\n\tOcral to Decimal Converation");
printf("\n\t============================");
printf("\n");
printf("\n\tPlease enter 6-bit Octal value;");
for(x=0;x<msb;x++)
{
do
{
binArray[x]=getche(); //获取字符
if(binArray[x]!='0'&&binArray[x]!='1'&&binArray[x]!='2'&&binArray[x]!='3'&&binArray[x]!='4'&&binArray[x]!='5'&&binArray[x]!='6'&&binArray[x]!='7'&&binArray[x]!=ENTER)
//当字符不在0~7之间且不是回车时
{
printf("\b \b"); //退格删除显示该字符
repeat=true;
}
else
{
repeat=false;
}
}while(repeat==true); //这个循环是为了剔除不是8进制的数
if(binArray[x]==13) //刚刚读入了回车,说明读数结束
{
msb=x;
break;
}
}
printf("\n\n\t");
for(x=0;x<msb;x++) //输出输入的,经过处理的 字符串
{
putchar(binArray[x]);
_sleep(TIME);
}
printf("Entered value:");
printf("\t\t");getch();
return 0;
}本回答被提问者和网友采纳
第2个回答  2011-07-19
第一,你的程序就有错的,定义数组不能使用表达式吧, char binArray[msb+1];这是错的。 _sleep(TIME);这是做什么的啊?你可以注释一下吗?
第3个回答  2011-07-25
你也是NYP的?

如何用c语言实现十进制数与八进制数的互换?
如果只是在输出上的区别的话很容易做到:printf("%o",x);\/\/以8进制输出 printf("%d",x);\/\/以十进制输出 源码:(VC6.0调试通过)include<stdio.h> void main(){ char ch;int x;printf("请选择转换的类型:\\n1 十进制转八进制 \\n2 八进制转十进制\\n");ch=getchar();switch(ch){ ca...

C语言中关于八进制和十进制转换问题
while(*(++p)!='\\0')n=n*8+*p-'0';\/\/修改这里,p是指针要用指针里的内容跟'\\0'做比较 printf("%d \\n",n);}

用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; ...

8进制转10进制的编程,用C语言的。请高手回答
int n;printf("请输入十进制数:");scanf("%d",&n);printf("转换成八进制数是:");r8(n);printf("\\n");} 参考资料:mail

求八进制转化为十进制的c语言思路及编程
思路:对于所有的八进制数符,按乘权求和的思想就可以实现转化。include<stdio.h> int main(){int x=0,c;printf("请输入一个八进制数:");scanf("%c",&c);while(c>='0'&&c<'8'){x=x*8+c-'0';scanf("%c",&c);} printf("十进制数为:%d\\n",x);return 0;} ...

C语言 这个八进制转十进制的程序为什么输入的是字符串而不是数字? #...
这是因为采用字符串输入时处理方便,效率高;而以数字输入则只能将其当作十进制数,先分割成为逐个一位数字(这一步处理效率低),再转换为十进制数。

C语言中八进制与十进制如何互相转化
先将十进制数转换为二进制数,然后就是从低位开始,每三位对应一位,不足补0 比如-32的代码是10101110(随便写的)转换之后就是256,前面一个不足三位,在最前面补0 010 101 110 2 5 6

c语言中8进制转10进制的算法
在C语言中,进行八进制转十进制的转换,主要是依据每个数字的权重。因为八进制数的基础数字是0到7,所以从右到左每一位代表了不同的权重。计算时,需要将每一位上的数字乘以一个基于其位置的系数,然后将所有结果相加。具体步骤如下:1. 识别八进制数字:将给定的八进制数分解为各个位数上的数字。

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]);pr...

C程序 输入八进制数转换成十进制数出
你的思路我不是很明白,那个while(a)是个死循环 既然是从8转10不应该是m=num%10; num=num\/10;是不是应该m=num%8; num=num\/8;我写了一个你看看 include <stdio.h> main(){ int num = 0; \/\/输入的数 int result = 0; \/\/结果 int base = 1; \/\/八进制的权值,第0位是8的...

相似回答