新的起点,从C基础开始(三)

一、常用进制之间的转换

1.十进制转二进制

#include <stdio.h>
#include <stdlib.h>
int main()
{
 int i,j,x,a[1000];
        scanf("%d",&x);
        for(i=0;;i++)
        {
                a[i]=x%2;
                x=x/2;
                if(x==0)
                        break;
        }
        for(j=i;j>=0;j--)
                printf("%d",a[j]);
        getchar();
        getchar();
        return 0;
}

2.二进制转十进制

#include <stdio.h>
#include <stdlib.h>
int main()
{
    long int bin;//定义一个长整型变量
    int ln=1,dec=0 ;
    scanf("%ld",&bin);
    while (bin)
    {
        dec+=bin%10*ln;
        ln*=2;
        bin/=10;
    }
    printf("%d",dec);
    getchar();
    getchar();
}

3.十进制转十六进制

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char a[10] = {0};
    int x,y,i,j,z;
    printf("请输入一个10进制数:");
    scanf("%d",&x);
    z = x;
    for(i = 0; x;i++){
        y = x%16;
        if(y>9)
            a[i] = y - 10+'A';
        else
            a[i] = y+'0';
        x=x/16;
    }
    printf("%d的十六进制表示:0x",z);
    for(j = i-1; j>=0; j--)
        printf("%c",a[j]);
    printf("\n");
    getchar();
    getchar();
}

4.十六进制转十进制

函数转换

int a = strtol(十六进制字符串,NULL,16); //a 为十六进制转换的十进制结果。

算法转换

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int m,i,t,sum;
   sum = 0;
   char s[50];
   printf("请输入十六进制数:");
   scanf("%s",s);
   for(i = 0;s[i];i++){
    if(s[i]<='9')
        t = s[i] -'0';
    else if(s[i]>'9'&&s[i] <'g'){
        t = s[i] -'a'+10;
        if(s[i]>'9'&&s[i] < 'G'){
            t = s[i] - 'A'+10;
        }
    }
    sum = sum*16 + t;
   }
   printf("%s的十进制数是:%d\n",s,sum);
   getchar();
   getchar();
}

5.十六进制转二进制

步骤:先将十六进制转换成十进制然后再将十进制转换成二进制

6.二进制转十六进制

步骤:先将二进制转换成十进制然后再将十进制转换成十六进制


解决问题的方法有多种多样,若有更简单的算法欢迎大神指教。






已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页