您的位置:首页 > 其它

hdoj 2031 进制转换

2015-04-26 17:02 162 查看

进制转换

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


[align=left]Problem Description[/align]
输入一个十进制数N,将它转换成R进制数输出。

[align=left]Input[/align]
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16,
R<>10)。

[align=left]Output[/align]
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

[align=left]Sample Input[/align]

7 2
23 12
-4 3

[align=left]Sample Output[/align]

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("\n");
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: