数制转换

给定一个M进制的数x,实现对x向任意一个非M进制的数的转换。

利用字符和数字之间的转换将要变换进制的数进行转换成要求进制的数。

#include<iostream>
using namespace std;
#define MAXCHAR 101
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);
}
}
int source_to_decimal(char temp[],int source)
{
int decimal_num;
int length;
int i;
for(int i=0;temp[i]!='\0';i++);
length=i;
for(int i=0;i<=length-1;i++)
{
decimal_num=(decimal_num*source)+char_to_num(temp[i]);
}
return decimal_num;
}
int decimal_to_object(char temp[],int 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)
{
for(int i=length-1;i>=0;i--)
{
cout<<temp[i]<<endl;
}
}
int main()
{
int source,object,length,decimal_num;
char temp[MAXCHAR];
int flag=1;
while(flag)
{
cout<<"转换前的数制是:";
cin>>source;
cout<<"转换前的数是:";
cin>>temp;
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;
}
return 0;
}

 

posted @ 2023-04-19 20:23  为20岁努力  阅读(13)  评论(0编辑  收藏  举报