C语言编程>第二十八周 ① 多功能进制转换器设计

多功能进制转换器设计

这两天花时间用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");
	}
} 

开机主页面:
在这里插入图片描述
十进制数 → 二进制数转换器页面
在这里插入图片描述
十进制数 → 八进制数转换器页面
在这里插入图片描述
十进制数 → 十六进制数转换器页面
在这里插入图片描述
二进制数 → 八进制数转换器页面
在这里插入图片描述
二进制数 → 十进制数转换器页面
在这里插入图片描述
二进制数 → 十六进制数转换器页面
在这里插入图片描述
任意进制数 → 十进制数转换器页面
在这里插入图片描述
十进制数 → 任意进制数转换器页面
在这里插入图片描述

越努力越幸运!
加油,奥力给!!!

猜你喜欢

转载自blog.csdn.net/qq_45385706/article/details/111305365
今日推荐