用c语言编程,进制转换的实现

发布网友 发布时间:2022-04-22 09:16

我来回答

2个回答

热心网友 时间:2023-05-23 17:30

C语言中实现10进制转换为任意进制的过程为:

参考代码:

#include <stdio.h>
int main()
{
    char map[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    int i,c[32],num,ind;
    do {printf("input num: ");scanf("%d", &num );}while(num<0 );
    do {printf("input ind: ");scanf("%d", &ind );} while( ind>16||ind<2);
    i=0;
    do {
        c[i++]=num%ind;
        num/=ind;
    } while(num!=0) ;
    for(i--;i>=0;i--)
        printf("%c",map[c[i]] );
    printf("\n");
    return 0;
}

运行结果:

input num: 100

input ind: 2

1100100


input num: 100

input ind: 8

144


input num: 100

input ind: 16

热心网友 时间:2023-05-23 17:30

说明:如18的二进制代码为:10010(用除2法算得). 18/2=9 余 0 9/2=4 余 1 4/2=2 余 0 2/2=1 余 0 1/2=0 余 1 (当除得的结果为0时,只需将所有的余数从上往上连在一起,就组成了18的二进制代码:10010) 如果要转换为8进制数,即用3个二进制位就可以表示一个8进制数,为了方便计算,我们在某些位上进行截止计算,如18我们就截取表示成10,010(“,”前的用逐位乘2法算得,当遇上“,”时乘10再用乘2法算得。),所以18的8进制表示为(1*2+0)*10+(0*2+1)*2+0=22(0)。对于16进制只要4个二进制就能表示一位16进制数,如18的截取表示为1,0010,16进制表示为 1*10+((0*2+0)*2+1)*2+0=12(h)。 #include "stdio.h" void main(){ int num,rlt,temp; int j,i,k; int ch1[30]; scanf("输入一个十进制数:%d",num);//输入一个十进制数num i=num; for(j=0;i>0;j++){//输出二进制数组 ch1[j]=i%2; i=i/2; } for(i=0,2*i<j,i++){//倒置得出正确的二进制代码 temp=ch1[i]; ch1[i]=ch1[j-i]; ch1[j-i]=temp; } do{ scanf("输入要输出的进制:%d",i);//输入要转换的进制数i }while(i!=2||i!=8||i!=16); if (i==8) k=3;//计算要所选进制所允许截取的最大位数k if (i==16) k=4; temp=0; rlt=0; for(i=0,i<j,i++){ if(i<j%k||(i-j%k)%k>0){ temp=temp*2+ch1[i];break; } if(i==j%k||(i-j%k)%k==0){//进行分位点的计算 temp=temp*2+ch1[i];rlt=rlt*10+temp;temp=0;break; } } if (k==3) i=8; else if(k==4) i=16; else i=2; printf("%d的%d进制代码为:%d",num,i,rlt); }

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com