C語言實現進制轉換——超圖面試題

  遞歸:遞歸的原理,就是本身調用本身自己。存在一個順序的問題,若是在遞歸前的是順序執行,遞歸後的是逆序執行,以下: ide

void gogogo()
{
    //遞歸以前
    gogogo();
    //遞歸以後
}
遞歸

  下面實現進制轉換就是利用的這個原理。spa

      代碼以下:code

#include<stdio.h>
#include<stdlib.h>
void  toletter(int num)
{
    switch (num)
    {
    case 10:
        printf("%c", 'a'); break;
    case 11:
        printf("%c", 'b'); break;
    case 12:
        printf("%c", 'c'); break;
    case 13:
        printf("%c", 'd'); break;
    case 14:
        printf("%c", 'e'); break;
    case 15:
        printf("%c", 'f'); break;
    default:
        printf("%d", num); break;
    }
}
//十進制轉二進制
void convertto2(int num)
{
    if (num ==1|| num==0)
    {
        printf("%d",num);
    }
    else
    {
      int n=num / 2;
      convertto2(n);
      printf("%d",num %2);//若是把這句話放在convertto2(n);以前就是順序執行,顯示是逆序,因此實現了餘數的倒序排列。
    }
}
//十進制轉八進制
void convertto8(int num)
{
    if (num  < 8)
    {
        printf("%d", num);
    }
    else
    {
        int n = num / 8;
        convertto8(n);
        printf("%d", num % 8);
    }
}
//十進制轉十六進制
void convertto16(int num)
{
    if (num<16)
    {
        toletter(num);
    }
    else
    {
        int n = num / 16;
        convertto16(n );
        toletter(num % 16);
    }

}

void main()
{
    int num;
    printf("請輸入一個整數");
    scanf_s("%d",&num);
    printf("\n十進制轉二進制:");
    convertto2(num);
    printf("\n十進制轉八進制:");
    convertto8(num);
    printf("\n十進制轉十六進制:");
    convertto16(num);
    system("pause");
}

 遞歸圖解blog

相關文章
相關標籤/搜索