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

    xiaoxiao2021-11-20  56

    一、常用进制之间的转换

    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*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;         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.二进制转十六进制

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

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

    转载请注明原文地址: https://ju.6miu.com/read-678383.html

    最新回复(0)