1. 程式人生 > >C語言實現進位制轉換

C語言實現進位制轉換

基本功能:
1、十進位制轉換二進位制
2、十進位制轉換八進位制
3、十進位制轉換十六進位制
4、二進位制轉換十進位制
5、八進位制轉換十進位制
6、十六進位制轉換十進位制
0、 退 出

程式碼實現:

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

void mune()
{
    printf("******************************************************\n");
    printf("**                                                  **\n"
); printf("** 進位制轉換 **\n"); printf("** **\n"); printf("** 1、十進位制轉換二進位制 **\n"); printf("** 2、十進位制轉換八進位制 **\n"); printf("** 3、十進位制轉換十六進位制 **\n"
); printf("** 4、二進位制轉換十進位制 **\n"); printf("** 5、八進位制轉換十進位制 **\n"); printf("** 6、十六進位制轉換十進位制 **\n"); printf("** 0、 退 出 **\n"); printf("** **\n"
); printf("******************************************************\n"); } void TenToTwo() { int num,m, c, i = 0; int n = 2; int a[32]; printf("輸入一個整數:"); scanf("%d", &num); m = num; while (num>0) { c = (num % n); a[i] = c; num = num / n; i++; } printf("十進位制數%d轉換成二進位制數是:", m); for (i--; i >= 0; i--) //將陣列倒序輸出 printf("%d", a[i]); printf("\n"); } void TenToEight() { int num, m, c, i = 0; int n = 8; int a[32]; printf("輸入一個整數:"); scanf("%d", &num); m = num; while (num>0) { c = (num % n); a[i] = c; num = num / n; i++; } printf("十進位制數%d轉換成八進位制數是:", m); for (i--; i >= 0; i--) //將陣列倒序輸出 printf("%d", a[i]); printf("\n"); } void TenToSixteen() { char arr[] = "0123456789ABCDEF"; char hex[16]; int i = 0; int j = 0; int num = 0,a = 0; printf("輸入一個整數:"); scanf("%d", &num); a = num; while (num) { hex[i++] = arr[num % 16]; //對十進位制數求餘並最終與hextable陣列中的字元匹配 num = num / 16; } printf("十進位制數%d轉換成十六進位制數是:", a); for (j = i - 1; j >= 0; --j) printf("%c", hex[j]); printf("\n"); } void TwoToTen() { long long n,a; int sum = 0, i = 0, m; printf("輸入一個二進位制數: "); scanf("%lld", &n); a = n; while (n != 0) { m = n % 10; n /= 10; sum += m*pow(2, i); ++i; } printf("二進位制數 %lld 轉換為十進位制為 %d\n", a, sum); } void EightToTen() { int n, a; int sum = 0, i = 0, m; printf("輸入一個八進位制數: "); scanf("%d", &n); a = n; while (n != 0) { m = n % 10; n /= 10; sum += m*pow(8, i); ++i; } printf("八進位制數 %d 轉換為十進位制為 %d\n", a, sum); } void SixteenToTen() { int num = 0; printf("輸入一個十六進位制數: "); scanf("%x", &num); printf("十六進位制數 %x 轉換為十進位制為 %d\n", num, num); } int main() { int n = 0; while (1) { mune(); printf("請選擇:"); scanf("%d", &n); switch (n) { case 1:TenToTwo(); break; case 2:TenToEight(); break; case 3:TenToSixteen(); break; case 4:TwoToTen(); break; case 5:EightToTen(); break; case 6:SixteenToTen(); break; case 0: exit(0); break; default: printf("您的選擇錯誤!!!\n"); break; } } }

執行結果:
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述