0%

C语言实现进制转换

昨天开始折腾如何通过C语言实现进制转换,简单记录一下 (つ´ω`)つ 。

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

void MENU()
{
printf("***********************************************");
printf("\n");
printf("\n");
printf(" 进制转换 ");
printf("\n");
printf("\n");
printf(" 1.二进制转换十进制 ");
printf("\n");
printf(" 2.十进制转换二进制 ");
printf("\n");
printf(" 3.八进制转换十进制 ");
printf("\n");
printf(" 4.十进制转换八进制 ");
printf("\n");
printf(" 5.十进制转十六进制 ");
printf("\n");
printf(" 6.十六进制转十进制 ");
printf("\n");
printf(" 0.退出程序 ");
printf("\n");
printf("\n");
printf("***********************************************");
printf("\n");
printf("\n");
}

void TwoToTen()
{
printf("输入一个待转换的二进制整数:");
int number;
scanf("%lld",&number);
int m=number;
int n,i=0,sum=0;
while(m!=0)
{
n=m%10;
m/=10;
sum+=n*pow(2,i);
i++;
}
printf("二进制整数 %lld 转换为十进制整数 %d",number,sum);
}

void TenToTwo()
{
printf("输入一个待转换的十进制整数:");
int number;
scanf("%d",&number);
int m=number;
int n,i=0,a[512];
while(m>0)
{
n=m%2;
m/=2;
a[i]=n;
i++;
}
printf("十进制整数 %d 转换为二进制整数 ",number);
for(i--;i>=0;i--)
{
printf("%d",a[i]);
}
}

void EightToTen()
{
printf("输入一个待转换的八进制整数:");
int number;
scanf("%d",&number);
int m=number;
int n,i=0,sum=0;
while(m!=0)
{
n=m%10;
m/=10;
sum+=n*pow(8,i);
i++;
}
printf("八进制整数 %d 转换为十进制整数 %d",number,sum);
}

void TenToEight()
{
printf("输入一个待转换的十进制整数:");
int number;
scanf("%d",&number);
int m=number;
int n,i=0,a[512];
while(m>0)
{
n=m%8;
m/=8;
a[i]=n;
i++;
}
printf("十进制整数 %d 转换为八进制整数 ",number);
for(i--;i>=0;i--)
{
printf("%d",a[i]);
}
}

void TenToSixteen()
{
printf("输入一个待转换的十进制整数:");
int number;
scanf("%d",&number);
char arr[]="0123456789abcdef";
int m=number;
int n,i=0,a[512];
while(m>0)
{
n=m%16;
m/=16;
a[i]=arr[n];
i++;
}
printf("十进制整数 %d 转换为十六进制整数 ",number);
for(i--;i>=0;i--)
{
printf("%c",a[i]);
}
}

void SixteenToTen()
{
printf("输入一个待转换的十六进制整数:");
int number;
scanf("%x",&number);
printf("十六进制整数 %x 转换为十进制整数 %d",number,number);
}

int main(void)
{
int n=0;
while(1)
{
MENU();
printf("输入0~6以选择需要执行的操作:");
scanf("%d",&n);
switch(n)
{
case 1:TwoToTen();
break;
case 2:TenToTwo();
break;
case 3:EightToTen();
break;
case 4:TenToEight();
break;
case 5:TenToSixteen();
break;
case 6:SixteenToTen();
break;
case 0:exit(0);
}
printf("\n");
printf("\n");
printf("\n");
}
}