C语言实现进制转换

学习制作《进制转换程序》

包括2,8,10,16进制的转换

这里所使用的方法为数学方法,不使用计算机进制转换功能。

#include<stdio.h>
//待更新,16转10的方法非算术方法,希望未来可以改进。
main()
{
//待更新,本程序代码使用算术方法,重在逻辑。
while(1)//循环体
{

  int a,b,c=1,d,i=0,m=0,n,sum=0;//a选择进制类型,b输入数据,c,d,i,m,n,sum,h[20],j[16]为其他数据
  int h[20];
  char j[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//部分公用定义,部分专用定义
  //提示部分
  printf("欢迎使用进制互转程序\n");//与十六进制的互转有待更新
  printf("10-2,按1,2-10按2,10-8按3,8-10按4,2-8按5,8-2按6\n");
  printf("16-2按7,16-10按8,16-8按9,2-16按10,8-16按11,10-16按12\n");//
  scanf("%d",&a);/**/

//程序主体由此开始*********************************************
  if(a==1)//first  111111111111111111111111111111111111111111111111111111111111
  {
     
	 printf("欢迎使用10—2进制转换程序\n");
     printf("请输入一个十进制数:\n");
     scanf("%d",&b);
     while(b>0)
	 {
          h[i]=b%2;
          i++;
          b=b/2;
	 }
     printf("转化后的二进制的数是:\n");
	 for(i--;i>=0;i--)
		printf("%d",h[i]);
	 printf("\n");
	 printf("...................................................................................................\n");
     printf("...................................................................................................\n");

  }
  else if(a==2)//22222222222222222222222222222222222222222222222222222222
  { 

         printf("欢迎使用2-10进制转换程序\n");
         printf("请输入一个二进制数(每一位数请勿超过1,否则无效)\n");
         scanf("%d",&b);
         while(b>0)
		 {
         sum=sum+b%10*c;
         b=b/10;
         c=2*c;
		 }
         printf("转化后的十进制的数是:\n");
         printf("%d\n",sum);
	     printf("...................................................................................................\n");
         printf("...................................................................................................\n");
  
  }
  else if(a==3)//33333333333333333333333333333333333333333333333333333333
  {
        
	     printf("欢迎使用10-8进制程序\n");
	     printf("请输入一个十进制数\n");
	     scanf("%d",&b);
	     while(b>0)
		 {
		      h[i]=b%8;
		      i++;
		      b=b/8;
		 }
         printf("转化后的八进制数是:\n");
	     for(i--;i>=0;i--)
		    printf("%d",h[i]);
         printf("\n");
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }
  else if(a==4)//44444444444444444444444444444444444444444444444444444444
  {

         printf("欢迎使用8-10进制程序\n");
         printf("请输入一个八进制数(每一位数不得超过7,否则无效)\n");
         scanf("%d",&b);
         while(b>0)
		 {
              sum=sum+b%10*c;
              b=b/10;
              c=8*c;
		 }
         printf("%d\n",sum);
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }
  else if(a==5)//555555555555555555555555555555555555555555555555555555555555555555
  {
         printf("欢迎使用2—8进制转换程序\n");
         printf("请输入一个二进制数(每一位请勿超过1,否则无效):\n");
         scanf("%d",&b);
         while(b>0)
		 {
              sum=sum+b%10*c;
              b=b/10;
              c=2*c;
		 }
	     while(sum>0)
		 {
		      h[i]=sum%8;
		      i++;
		      sum=sum/8;
		 }
         printf("转化后的八进制数是:\n");
	     for(i--;i>=0;i--)
		    printf("%d",h[i]);
         printf("\n");
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }
  else if(a==6)//66666666666666666666666666666666666666666666666666666666666666666666666666
  {
      
         printf("欢迎使用8-2进制转换程序\n");
         printf("请输入一个八进制数(每一位请勿超过7,否则无效):\n");
         scanf("%d",&b);
         while(b>0)
		 {
         sum=sum+b%10*c;
         b=b/10;
         c=8*c;
		 }
         
         while(sum>0)
		 {
          h[i]=sum%2;
          i++;
          sum=sum/2;
		 }
         printf("转化后的二进制的数是:\n");
	     for(i--;i>=0;i--)
		    printf("%d",h[i]);
	     printf("\n");
	     printf("...................................................................................................\n");
         printf("...................................................................................................\n");
  
  }
  else if(a==7)//777777777777777777777777777777777777777777777777777777777777777777777
  { 

         printf("欢迎使用16-2进制程序\n");
         printf("请输入一个十六进制数:\n");
         scanf("%x",&b);
         printf("转化后的十进制的数是:\n");
         printf("%d\n",b);
         while(b>0)
		 {
          h[i]=b%2;
          i++;
          b=b/2;
		 }
         printf("转化后的二进制的数是:\n");
	     for(i--;i>=0;i--)
		 printf("%d",h[i]);
	     printf("\n");
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");
  
  }
  else if(a==8)//8888888888888888888888888888888888888888888888888888888888888888
  {
         printf("欢迎使用16-10进制转换程序\n");
         printf("请输入一个十六进制数:\n");
         scanf("%x",&b);
         printf("转化后的十进制的数是:\n");
         printf("%d\n",b);
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");
 
  }
  else if(a==9)//9999999999999999999999999999999999999999999999999999999999999
  {
         printf("欢迎使用16-8进制程序\n");
         printf("请输入一个十六进制数(每一位数不得超过7,否则无效)\n");
         scanf("%x",&b);
         printf("转化后的十进制的数是:\n");
         printf("%d\n",b);
         while(b>0)
		 {
		      h[i]=b%8;
		      i++;
		      b=b/8;
		 }
         printf("转化后的八进制数是:\n");
	     for(i--;i>=0;i--)
		    printf("%d",h[i]);
         printf("\n");
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");
        
  }
  else if(a==10)//10 10 10 10 10 10 10 10 10 10 10 10 10 
  {
         printf("欢迎使用2-16进制程序\n");
         printf("请输入一个二进制数(每一位数不得超过1,否则无效)\n");
         scanf("%d",&b);        
         while(b>0)		 
		 {        
              sum=sum+b%10*c;       
              b=b/10;    
              c=2*c;		
		 }     
   
         while(sum>0) 		 
		 {           
              d=sum%16;        
              h[i]=d;    
              i++;     
              sum=sum/16; 		
		 }        
         printf("转化为十六进制的数为:0x");     
         for(i--;i>=0;i--)		 
		 {  		
 	        m=h[i];        
            printf("%c",j[m]); 			
		 }       
         printf("(0x为十六进制数符号)");      
         printf("\n"); 
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }
  else if(a==11)//11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
  {
         printf("欢迎使用8-16进制程序\n");
         printf("请输入一个八进制数(每一位数不得超过7,否则无效)\n");
         scanf("%d",&b);
         while(b>0)
		 {
              sum=sum+b%10*c;
              b=b/10;
              c=8*c;
		 }
         printf("(0x为十六进制数符号)"); 
         printf("转化为十六进制的数为:0x");
         printf("%x\n",sum);
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }
  else if(a==12)//12 12 12 12 12 12 12 12 1212
  {
        
	     printf("欢迎使用10-16进制转换程序\n");
         printf("请输入一个十进制整数:"); 
         scanf("%d",&b); 
         while(b>0) 
		 {
              d=b%16; 
              h[i]=d; 
              i++;
              b=b/16; 
		 } 
         printf("转化为十六进制的数为:0x"); 
         for(i--;i>=0;i--)
		 {  
			m=h[i];
            printf("%c",j[m]); 
			
		 }
         printf("(0x为十六进制数符号)");
         printf("\n"); 
         printf("...................................................................................................\n");
         printf("...................................................................................................\n");

  }


}//循环括号
}//主程序括号



//本程序起始于2020年10月11日晚,v2.00版本发布于2020年10月12日晚22:30;
//敬请期待更新!!!

 

制作不易,新人犹难,多多支持。

由于本系统未上传,所以没有连接,见谅。

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值