多功能进制转换器设计
这两天花时间用C语言编写了一个多功能进制转换器,可以实现十进制数到二进制数的转换、十进制数到八进制数的转换、十进制数到十六进制数的转换、二进制数到八进制数的转换、二进制数到十进制数的转换、二进制数到十六进制数的转换、以及任意进制数到十进制数的转换和十进制数对任意进制数的转换。基本涵盖了程序员日常所设计用到的所有进制转换类型。运行窗口颜色选择了比较护眼又好看的水蓝色。废话不多说,直接上代码。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
void ten_two();//十进制 → 二进制
void ten_eight();//十进制 → 八进制
void ten_sixteen();//十进制 → 十六进制
void two_eight();//二进制 → 八进制
void two_ten();//二进制 → 十进制
void two_sixteen();//二进制 → 十六进制
void at_will_ten();//任意进制 → 十进制
void ten_at_will();//十进制 → 任意进制
void STarting_up();
int main()
{
STarting_up();
}
void STarting_up()
{
system("cls");
int n;
do
{
system("color B1");
printf("\t\t\t\t\t ********************************** \n");
printf("\t\t\t\t\t * * * \n");
printf("\t\t\t\t\t * 欢迎 * 多功能 * \n");
printf("\t\t\t\t\t * 使用 * 进制转换器 * \n");
printf("\t\t\t\t\t * * * \n");
printf("\t\t\t\t\t **********************************\n\n");
printf("\t\t\t\t\t @各进制转换功能内输入0返回到此界面\n\n");
printf("\t1.十进制 → 二进制\n\n");
printf("\t2.十进制 → 八进制\n\n");
printf("\t3.十进制 → 十六进制\n\n");
printf("\t4.二进制 → 八进制\n\n");
printf("\t5.二进制 → 十进制\n\n");
printf("\t6.二进制 → 十六进制\n\n");
printf("\t7.任意进制 → 十进制\n\n");
printf("\t8.十进制 → 任意进制\n\n");
printf("请选择功能:");
scanf("%d",&n);
if(n==0)
break;
switch(n)
{
case 1:ten_two();
break;
case 2:ten_eight();
break;
case 3:ten_sixteen();
break;
case 4:two_eight();
break;
case 5:two_ten();
break;
case 6:two_sixteen();
break;
case 7:at_will_ten();
break;
case 8:ten_at_will();
break;
default:printf("输入有误,请在1-8之间选择\n");
}
}while(1);
}
void ten_two()
{
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 十进制 → 二进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int num, p[100],i=0,count;
printf("请输入一个十进制数:");
scanf("%d",&num);
if(num==0)
STarting_up();
for(count=0;;count++)
{
if(num==0)
break;
p[count]=num%2;
num=num/2;
i++;
}
printf("转换为二进制:");
for(count=i-1;count>=0;count--)
printf("%d",p[count]);
printf("\n");
}
}
void ten_eight()
{
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 十进制 → 八进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int num, p[100],i=0,count;
printf("请输入一个十进制数:");
scanf("%d",&num);
if(num==0)
STarting_up();
for(count=0;;count++)
{
if(num==0)
break;
p[count]=num%8;
num=num/8;
i++;
}
printf("转换为八进制:");
for(count=i-1;count>=0;count--)
printf("%d",p[count]);
printf("\n");
}
}
void ten_sixteen()
{
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 十进制 → 十六进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int num, p[100],i=0,count;
printf("请输入一个十进制数:");
scanf("%d",&num);
if(num==0)
STarting_up();
for(count=0;;count++)
{
if(num==0)
break;
p[count]=num%16;
num=num/16;
i++;
switch(p[count])
{
case 10:p[count]='A';
break;
case 11:p[count]='B';
break;
case 12:p[count]='C';
break;
case 13:p[count]='D';
break;
case 14:p[count]='E';
break;
case 15:p[count]='F';
break;
}
}
printf("转换为十六进制:");
for(count=i-1;count>=0;count--)
{
if(p[count]<10)
printf("%d",p[count]);
if(p[count]>=10)
printf("%c",p[count]);
}
printf("\n");
}
}
void two_eight(){
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 二进制 → 八进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int x;
printf("请输入一个二进制数:");
scanf("%d",&x);
if(x==0)
STarting_up();
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x=x/10;
product=product*2;
}
int num, p[100],i=0,count;
num=y;
for(count=0;;count++)
{
if(num==0)
break;
p[count]=num%8;
num=num/8;
i++;
}
printf("转换为八进制:");
for(count=i-1;count>=0;count--)
printf("%d",p[count]);
printf("\n");
}
}
void two_ten(){
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 二进制 → 十进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int x;
printf("请输入一个二进制数:");
scanf("%d",&x);
if(x==0)
STarting_up();
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x=x/10;
product=product*2;
}
printf("转换为十进制:%d\n",y);
}
}
void two_sixteen(){
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 二进制 → 十六进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int x;
printf("请输入一个二进制数:");
scanf("%d",&x);
if(x==0)
STarting_up();
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x=x/10;
product=product*2;
}
int num, p[100],i=0,count;
num=y;
for(count=0;;count++)
{
if(num==0)
break;
p[count]=num%16;
num=num/16;
i++;
switch(p[count])
{
case 10:p[count]='A';
break;
case 11:p[count]='B';
break;
case 12:p[count]='C';
break;
case 13:p[count]='D';
break;
case 14:p[count]='E';
break;
case 15:p[count]='F';
break;
}
}
printf("转换为十六进制:");
for(count=i-1;count>=0;count--)
{
if(p[count]<10)
printf("%d",p[count]);
if(p[count]>=10)
printf("%c",p[count]);
}
printf("\n");
}
}
void at_will_ten(){
//任意进制转十进制
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 任意进制 → 十进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int x,p; //x输入数字 p该数的进制数
printf("请输入一个任意一个数:");
scanf("%d",&x);
if(x==0)
STarting_up();
printf("请描述该数的进制数:");
scanf("%d",&p);
if(x==0)
STarting_up();
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x=x/10;
product=product*p;
}
printf("转换后的十进数为:%d\n",y);
}
}
void ten_at_will(){
//十进制转任意进制
system("cls");
printf("\t\t\t\t\t *********************************** \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t * 十进制 → 任意进制转换器 * \n");
printf("\t\t\t\t\t * * \n");
printf("\t\t\t\t\t ***********************************\n\n");
while(1)
{
int x,p; //x为十进制数,p为目标进制大小
printf("请输入一个任意一个数:");
scanf("%d",&x);
if(x==0)
STarting_up();
printf("请描述需要该数转换成的进制数:");
scanf("%d",&p);
if(x==0)
STarting_up();
int a[100]; //存放余数
int count=0;
do
{
a[count++]=x%p;
x=x/p;
}while(x!=0);//当商不为0时进行循环
for(int i=count-1;i>=0;i--){
printf("%d",a[i]);
}
printf("\n");
}
}
❤
开机主页面:
❤
十进制数 → 二进制数转换器页面
❤
十进制数 → 八进制数转换器页面
❤
十进制数 → 十六进制数转换器页面
❤
二进制数 → 八进制数转换器页面
❤
二进制数 → 十进制数转换器页面
❤
二进制数 → 十六进制数转换器页面
❤
任意进制数 → 十进制数转换器页面
❤
十进制数 → 任意进制数转换器页面
越努力越幸运!
加油,奥力给!!!