编写一个函数:将一个N进制数转换成M进制数(N和M在2到16进制之间),N进制数和M进制数均以字符串方式存储。如输入进制N的值为2,而后输入一个二进制数1010,再输入进制M的值为10,输出结果为10 。
样例输入:
2
1010
10
样例输出:
10
#include<iostream>
#include <cmath>
using namespace std;
void select_cout(int num)
{
//用来把10,11,12等数转换为A,B,C,D,E,F
if(num>=0 &&num<=9) cout<<num;
if(num==10) cout<<"A";
if(num==11) cout<<"B";
if(num==12) cout<<"C";
if(num==13) cout<<"D";
if(num==14) cout<<"E";
if(num==15) cout<<"F";
}
void change(int num,int N)
{
//把十进制数num转换为N进制数
int reminder;
if(num<N)
{
select_cout(num);
return ;
}
reminder = num%N;
change(num/N,N);
select_cout(reminder);
}
int NumToTen(char *s,int x)
{
//把X进制数转换为十进制数
int sum=0,count=0,temp=0;
char *p = s;
while(*p)
{
p++;
count++;
}
p--;
while(count)
{
sum+=(pow(x,temp)*(*p-'0'));
p--;
count--;
temp++;
}
return sum;
}
int main()
{
int x,y;
char num1[100];
cin>>x>>num1;
cin>>y;
change(NumToTen(num1,x),y);
cout<<endl;
}
或
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
printf("%X",n);
return 0;
}