C語言實現進位制轉換
阿新 • • 發佈:2019-01-25
基本功能:
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;
}
}
}
執行結果: