sdut oj1252 数据结构实验之栈一:进制转换
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
示例输入
7 2 23 12 -4 3
示例输出
111 1B -11
#include <bits/stdc++.h>
using namespace std;
stack<int>Q;
void Transform(long n,int m)
{
int k,t;
if(n==0)
{
cout<<"0";
}
if(n<0)
{
cout<<"-";
n=abs(n);
}
while(n)
{
k=n%m; //n对m取余数,并且余数进栈,便于以后倒序输出
Q.push(k);
n=n/m; //直到n为0为止
}
while((!Q.empty()))
{
t=Q.top();
Q.pop();
if(t>=10&&t<=15)
{
switch(t)
{
case 10:
cout<<"A";
break;
case 11:
cout<<"B";
break;
case 12:
cout<<"C";
break;
case 13:
cout<<"D";
break;
case 14:
cout<<"E";
break;
case 15:
cout<<"F";
break;
}
}
else cout<<t;
}
}
int main()
{
int n,m;
while(cin>>n>>m)
{
Transform(n,m);
cout<<endl;
}
return 0;
}