c语言编程怎么实现进制转换?

如题所述

可以用直接法和间接法转换。

1、(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。

(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:

①整数部分

方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

②小数部分

方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。

2、十进制的转换到十六进制:

十六进制与八进制有很多相似之处,可以参照上面八进制与十进制的转换实现这两个进制之间的转换。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-21
  1、十进制转换成八进制有两种方法:
  (1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。
  (2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:
①整数部分
方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。
  ②小数部分
方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。
  2、十进制的转换到十六进制:
  十六进制与八进制有很多相似之处,可以参照上面八进制与十进制的转换实现这两个进制之间的转换。
第2个回答  2009-12-03
#include <stdio.h>
int main(void)
{
int a8, b10, c16;/*a8,b10,c16分别代表八进制数,十进制数和十六进制数*/
scanf("%o%d%x", &a8, &b10, &c16);
printf("%o,%d,%x\n", a8,a8,a8);
printf("%o,%d,%x\n", b10,b10,b10);
printf("%o,%d,%x\n", c16,c16,c16);
}
要重复,添加循环就OK了。
这里简单的实现你的输入和输出功能,并没有真正从运算规则上去进行转换,你也没做这样的要求,不知道是不是你想要的结果。
第3个回答  2017-12-30
输入一个十进制数N,将它转换成R进制数输出,这里假设最大为十六进制。
#include <stdio.h>
int exchange(int a)
{
if(a == 10){printf("A");return 0;}
if(a == 11){printf("B");return 0;}
if(a == 12){printf("C");return 0;}
if(a == 13){printf("D");return 0;}
if(a == 14){printf("E");return 0;}
if(a == 15){printf("F");return 0;}
printf("%d",a);
}
int main(int argc, char *argv[])
{
int x,y,i,j,a[110];
while(scanf("%d%d",&x,&y) == 2)//输入x,y,x为十进制数,y为要转换的进制
{
if(x < 0){printf("-"); x = -x;}//如果x小于零,转换成正数再计算,然后先把负号输出
if(x == 0){printf("0");return 0;}
for(i = 0;x != 0;i++)//一下为十进制转换成其他进制的基本规则
{
a[i] = x % y;
x = x / y;
}
i--;
if(y > 10)//如果要转换的进制大于十进制,要特别处理。
for(j = i;j >= 0;j--)
exchange(a[j]);
else for(j = i;j >= 0;j--)
printf("%d",a[j]);
printf("\n");
}
return 0;
}

C语言编程:怎么把一个十进制数转换成为一个十六进制数
1. 选择一个底数,即十六进制。在十六进制中,底数为16。2. 将十进制数除以16,记录余数。3. 如果余数小于10,则直接作为十六进制数的一部分;如果余数为10到15之间的某个值,则将其转换为相应的十六进制字母(A到F)。4. 将商再次除以16,继续执行步骤2和3,直到商为0。5. 将所有记录的余数...

c语言编程怎么实现进制转换?
可以用直接法和间接法转换。1、(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分 方法:除8取余法,即每次将整数部...

C语言 2进制,8进制,10,进制,16进制的相互转换
- **至16进制**:借助`printf`与`%x`或`%X`格式 2. 从其他进制转换至10进制 - **2进制至10**:采用`strtol`函数 - **8进制至10**:同样使用`strtol`,设置第二个参数为8 - **16进制至10**:利用`strtol`,指定第二个参数为16 代码实例 10进制转2进制 c include void decToBin(int ...

C语言中的进制怎么转换啊
一位一位的进行进制转换,算法思想和十进制转换到二进制相同,除以目标进制,余数为低位。任意进制之间的进制转换。需要考虑高精度整形的设计,用数组模拟一个整形变量。该进制转换实用性不强,一般出现在计算机程序竞赛当中。8,10,16进制的转换,在C语言中有不少函数都能实现上面几种进制之间的进制转换。

用C语言编程,输入一个十进制正整数,输出其对应的十六进制整数。
在C语言编程中,要实现将十进制正整数转换为十六进制整数,可以使用以下代码片段:c include int main() { int decimalInput; \/\/ 定义要转换的十进制数 int hexadecimalOutput; \/\/ 存储十六进制结果 \/\/ 输入十进制数 printf("请输入一个十进制正整数: ");scanf("%d", &decimalInput);\/\/ 转换为...

用C语言编写,输入一个十进制并转换成二进制
可以通过C语言编写一个程序,将输入的十进制数转换为二进制数。首先,我们需要了解十进制和二进制之间的转换原理。十进制是我们日常生活中常用的数值表示方法,每一位上的数码都是0~9之间的数字。而二进制则只有0和1两个数码。要将十进制转换为二进制,可以采用“除2取余”的方法,即将十...

用c语言编程能实现把二进制转换为十进制吗?
c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:把20转换成二进制:20\/2=10...余数为0 最低位10\/2=5...余数为05\/2=2...余数为12\/2=1...余数为01\/2=0...余...

C语言如何实现十六进制转换成十进制
C语言实现十六进制转换成十进制如下:例如将十六进制数字 9FA8C 转换成十进制:9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)。从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的...

c语言 十进制转换为十六进制?
在C语言中,可以使用`printf()`函数的格式控制符将十进制数转换为十六进制。具体来说,可以使用 `%x` 格式控制符。例如:```c int decimal_number = 255;printf("%x", decimal_number);```上述代码将十进制数255转换为十六进制形式,并输出结果ff。需要注意的是,在使用 `%x` 格式控制符时,...

用c语言编一个简单的进制转换程序
给你打个简单的,我已经测试了,include<stdio.h> void main(){ int a;printf("请输入一个十进制数\\n");scanf("%d",&a);printf("该数的十六进制是:%x\\n",a);printf("该数的八进制是:%o\\n",a);}

相似回答