数制转换程序

 下面是一个用c++写的数制转换小程序,可以实现常见的数制之间的转换。

 

#include <cstdlib>
#include <iostream>
#define N 4    
using namespace std;

//定义函数 dectoother(),该函数能够将一个十进整数转换成其他进制的数 ,并将结果输出
void dectoother1(float number,int n)
{ int output[N][8] = {0},mod=0 ;
int div=0;  
unsigned char b[N]={0};
    for(int i=0;i<N;i++) b[i]=*(( char *)&number+i);
   for(int i=0;i<N;i++)
{ div=b[i];
    for(int j=0;j<8;j++)
    {output[i][j]=div%n; div/=n;}  
}
    cout <<"("<<number<<")10 = (" ;
    for(int i=N-1;i>=0;i--)
      { for(int j=7;j>=0;j--)
        { if((i==N-1&&j==6)||(i==N-2&&j==6))cout <<" " ;
           cout <<output[i][j];
        }
      }
    cout <<"/b)"<< n <<endl ;
}

//定义函数 dectoother(),该函数能够将一个十进整数转换成其他进制的数 ,并将结果输出
void dectoother1(int number,int n)
{ int output[N][8] = {0},mod=0 ;
int div=0;  
unsigned char b[N]={0};
    for(int i=0;i<N;i++) b[i]=*(( char *)&number+i);
   for(int i=0;i<N;i++)
{ div=b[i];
    for(int j=0;j<8;j++)
    {output[i][j]=div%n; div/=n;}  
}
    cout <<"("<<number<<")10 = (" ;
    for(int i=N-1;i>=0;i--)
      {for(int j=7;j>=0;j--)cout <<output[i][j]; cout <<" "; }
    cout <<"/b)"<< n <<endl ;
}

int gotoloop()          //此函数询问用户是否退出程序
{
    //询问是否退出
    char c;
    loop1 : cout <<"是否退出程序?(Y/N)";
       /* 通过 while 循环把输入流中的余留数据“吃”掉 */
       while ( (c=getchar()) != '/n' && c != EOF ) ;      
       switch(getchar())
       {
         case 'n':
         case 'N': cout<<endl;return 1;
         case 'y':
         case 'Y': return 0;
         default :cout <<"输入错误!";
                  goto loop1;
       }       
}

//主函数
int main(int argc, char *argv[])
{    //程序介绍
     cout <<"************************************************/n"
          <<"*         此程序可以根据输入,将十进制数        */n"
          <<"*        转换成相应的其他进制的数并输出.       */n"
          <<"*         制作人:王祥林   时间:2008-3-22       */n"
          <<"************************************************/n";   
    // 提示输入
    loop : float fnumber=0;
            int   dnumber=0,other=2,flag=0;
    cout <<"你将输入的数是:1,整数 2,浮点数" <<endl
         <<"请输入数字代号:" ;
    cin >>flag;
    if(1==flag) { cout << "请输入一个要转换的十进制整数,并以ENTER键结束输入:" ;
                  cin >>dnumber ;
                }
    else        { cout << "请输入一个要转换的十进制浮点数,并以ENTER键结束输入:" ;
                  cin >>fnumber ;
                }
    cout <<"2,二进制/n3,三进制/n4,四进制/n......" <<endl
         <<"请输入将要转换成的进制的数字代号,并以ENTER键结束输入:" ;
    cin >> other ;   
    //调用数值转换函数
    if(1==flag)dectoother1(dnumber,other) ;
    else       dectoother1(fnumber,other) ;   
    //询问是否退出
    if(gotoloop())goto loop;    
     //退出程序
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值