1.10 数值转换
#include<bits/stdc++.h>
using namespace std;
int source,object,length;//储存原数,村拿出目标数值,存储字符串长度
long decimal_num;//存储十进制
char temp[1000];//存转换后的数值
int flag=1;//是否退出的标志
/*将字符转换为数字*/
int char_to_num(char ch)
{
if(ch>='0'&&ch<='9')return ch-'0';
else return ch-'A'+10;
}
//将数字转换为数字
char num_to_char(int num)
{
if(num>=0&&num<=9)return (char)('0'+num-0);
else return (char)('A'+num-10);
}
long source_to_decimal(char temp[],int source)
{
long decimal_num=0;
int length;
int i;
for(i=0;temp[i]!='\0';i++)
{
decimal_num=(decimal_num*source)+char_to_num(temp[i]);
}
return decimal_num;
}
int decimal_to_object(char temp[],long decimal_num,int object)
{
int i=0;
while(decimal_num)
{
temp[i]=num_to_char(decimal_num%object);
decimal_num=decimal_num/object;i++;
}
temp[i]='\0';
return i;
}
void output(char temp[],int length)
{
int i;
for(i=length-1;i>=0;i--)
{
cout<<temp[i];
}puts("");
}
int main()
{
while(flag)
{
cout<<"转换前的数是:";
cin>>temp;
cout<<"进制是:";
cin>>source;
cout<<"进制是:";cin>>object;
cout<<"转换后的数是:";
decimal_num=source_to_decimal(temp,source);
length=decimal_to_object(temp,decimal_num,object);
output(temp,length);
cout<<"继续输入1,否则输入0:"<<endl;
cin>>flag;
}
}