纯C语言实现进制之间的输入转换输出,下附代码只是实现了数据的显示,若要更改使其返回转换后的数值也是比较容易的。个人感觉C++编写会更加容易一些,烦请读者自己更改。其中有部分繁琐冗杂的地方还请大家见谅Orz
核心思想:
1)求模取余法实现十进制对其他进制的转换
2)通过字符数组存储要转换的二/八/十六进制数据,再逐位存储到整型数组当中
3)通过位数与幂的关系完成对十进制的转换
附代码:
1.C语言原版
#include<stdio.h>
void DecBinary(); // 十进制-->二进制
void DecOct(); // 十进制-->八进制
void DecHex(); // 十进制-->十六进制
void BinaryDec(); // 二进制-->十进制
void OctDec(); // 八进制-->十进制
void HexDec(); // 十六进制-->十进制
int input(); // 十进制转换的输入重复代码封装为一个函数
int exp(int n); // 十进制转换二进制的幂计算
int exp1(int n); // 十进制转换八进制的幂计算
int exp2(int n); // 十进制转换十六进制的幂计算
void menu();
int main()
{
int choice = 0;
do
{
menu();
scanf("%d", &choice);
switch (choice)
{
case 1:
DecBinary();
break;
case 2:
DecOct();
break;
case 3:
DecHex();
break;
case 4:
BinaryDec();
break;
case 5:
OctDec();
break;
case 6:
HexDec();
break;
case 0:
break;
default:
printf("选项无效.\n");
break;
}
} while (choice != 0);
getchar();
//std::cin.get();
return 0;
}
void menu()
{
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("Please input the choice:\n");
}
int input()
{
int n;
printf("请输入需要转换的十进制数: ");
scanf("%d", &n);
return n;
}
int exp(int n)
{
int result = 1;
for (int i = 0; i < n; i++)
{
result *= 2;
}
return result;
}
int exp1(int n)
{
int result = 1;
for (int i = 0; i < n; i++)
{
result *= 8;
}
return result;
}
int exp2(int n)
{
int result = 1;
for (int i = 0; i &