⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 五、 进制转换器(10) 要求:(1)可输入二进制、八进制、十进制、十六进制数; (2)将已输入的数转换成其余进制的数; (3)具有输入输出界面。
💻 TXT
字号:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
 bool check(char,int);
 int trans(char);
 char translate(int );
 int a,i,j,c,sum=0,mul=1;
 char b,n;
 vector <char> num,number;
 for(;;)
 {
  int q=0;   //标致符
  cout<<"请告诉我们您要输入的是几进制数:\n";
  cin>>a;   //进制
  cout<<"请输入数值.如果结束请输入‘z’\n";
  for(;;)
  {
   cin>>n;  //n 是输入的字符
   if(n=='z')
    break;
   if(!check(n,a))
   {
    q=1;
    break;
   }
   num.push_back(n);
  }
  if (q==1)
  {
   cout<<"您输入的数据有误,请重新输入.\n";
      num.clear();
   continue;
  }
  cout<<"您输入的数字是:\n";
  for(i=0;i<=num.size()-1;i++)
   cout<<num[i];
  cout<<"\n确认请按1,修改请按2\n";
   cin>>b;
  if(b=='1')
   break;
 }
 for(i=num.size()-1;i>=0;i--)
 {
  mul=1;
  for(j=1;j<=num.size()-i-1 ;j++)
  {
   mul=mul*a;
  }
  sum=sum+trans(num[i])*mul;    //转换成10进制位权值
 }
 cout<<"请告诉我们您要转换成几进制数:\n";
 cin>>a;
 for(i=0;;i++)
 {
  c=sum%a;
  sum=(sum-c)/a;      //   转换成N进制
  number.push_back(translate(c));
  if(sum==0)
   break;
 }
 for(i=number.size()-1;i>=0;i--)
   cout<<number[i];
 cout<<'\n';
 return 0;
}

bool check(char n, int a)
{
 int trans(char);
  if(trans(n)>=a)
   return false;
  else 
   return true;
}

int trans(char c)   //转换成10进制下的数
{
 if(int(c)>=48&&int(c)<=57)
  return (int(c)-48);
 else
 {
  if(int(c)>=97&&int(c)<=121)
  return (int(c)-87);
 
  else
  {
   if(int(c)>=65&&int(c)<=89)
   return (int(c)-55);
  }
 }
}
char translate(int c)
{
 if(c<=9)         //进行反转换
  return(char(c)+48);
 else
  return(char(c)+87);   //16进制反转
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -