【C語言】 任意十進制數字轉十六進制


大概思路:
輸入任意十進制數字 首先確定位數;

使用整形數組來存儲十六進制數; a[0] 表示十六進制數字的位數;

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 10
int* ahex(int dec){
    int n=1;
    int m=16;
    int *a;
    a = (int*)malloc(sizeof(int)*MAXSIZE+1);
    while(dec >= m)
    {
        m = m*16;
        n++;
    }
    //printf("位數:%d\n",n);
    *a = n;
    while(n>0)
    {
         *(a+n)= dec/(m/16);
         dec = dec-*(a+n)*(m/16);
         n--;
         m = m/16;

    }
    return a;
}

void print_hex(int *p){
    int n = *p;
    printf("hex: 0x");
    while(n>0)
    {
        switch(*(p+n)){
            case 10:printf("A");break;
            case 11:printf("B");break;
            case 12:printf("C");break;
            case 13:printf("D");break;
            case 14:printf("E");break;
            case 15:printf("F");break;
            default: printf("%d",*(p+n));break;
        }
        n--;
    }
    printf("\n");
}
int main()
{
    int rec=0;
    int *p;
    while(1){
        printf("請輸入一個十進制數字:");
        scanf("%d",&rec);
        p = ahex(rec);
        print_hex(p);
    }
    return 0;
}

最終效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM