进制转换(十进制转为R进制)

输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input

7 2
23 12
-4 3

Sample Output

111
1B
-11

将数字n对数字R反复取余数,余数的逆序就是结果。
其中值得注意的就是输出字符加上一个数字的结果是一个整数,如果想要输出字符就要输出单独输出字符。
#include<iostream>
using namespace std;
char a[999];
int main()
{
    
    
	long long n;
	int r;
	while(cin>>n>>r)
	{
    
    
		int flag=0;
		if(n<0)
		{
    
    
			flag=1;
			n=-n;
		}
		int q=0;
		while(n!=0)
		{
    
    
			a[q]=n%r;
			n=n/r;
			q++;
		}
		q--;
		if(flag)
		cout<<"-";
		for(int i=q;i>=0;i--)
		{
    
    
			char q;
			if(a[i]<=9&&a[i]>=0)
			q=a[i]+'0';
			else
			q=a[i]-10+'A';
			cout<<q;
		}
		cout<<endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/Huo6666/article/details/108095343