📄 新建 文本文档.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 + -