hdoj 2031 进制转换

进制转换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 30304    Accepted Submission(s): 16811


Problem Description
输入一个十进制数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
 
此题主要考察十进制转换为其他进制,利用十进制数短除所要转换的进制每次记录余数,最后倒序输出余数
 
#include<stdio.h>
#include<string.h>
int main()
{
	int n,m,j,i,s,y,l2;
	char b[100];
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		y=0;l2=0;j=1;
		s=0;
		while(n!=0)
		{
			if(n<0)   //考虑n为负数的情况 
			{
				s=n;
				n=-n;
			}
			 y=n%m;   //求每次短除m后的余数 
			 n=n/m;      //求每次短除m后的商 
			 if(y>=10)
			 {
			 	l2=j;  //记录字符串长度 
			 	b[j]=y+55;//将数字转换为字符 
			 	j++;
			 }
			 else
			 {
			 	 l2=j;
			     b[j]=y+48;
			     j++;
			 }
		}
		if(s<0)
			printf("-");
		for(i=l2;i>=1;i--)
		{			
		    printf("%c",b[i]);
		}
		printf("
");
	}
	return 0;
} 

  

原文地址:https://www.cnblogs.com/tonghao/p/4457989.html