C语言习题5.19--进制转换
时间: 1ms 内存:64M
描述:
输入一个十进制数N,将它转换成R进制数输出。
输入:
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出:
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
示例输入:
7 2
23 12
-4 3
示例输出:
111
1B
-11
提示:
参考答案(内存最优[752]):
#include <stdio.h>
char f(char n)
{
return (n<10?(n+'0'):(n-10+'A'));
}
int main()
{
char b[32];
int n, m, i, k;
while (scanf("%d %d", &n, &m) == 2){
if (n == 0){
printf("0\n");
continue;
}
if (n < 0){
printf("-");
n = -n;
}
k = 0;
while (n > 0){
b[k++] = n%m;
n /= m;
}
for (i=k-1; i>=0; i--){
printf("%c", f(b[i]));
}
printf("\n");
}
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
void DectoR(int n,int radix)
{
if(n==0)
return ;
DectoR(n/radix,radix);
int r = n%radix;
if (r<10)
putchar(r+'0');
else
putchar(r-10+'A');
}
int main()
{
int n, m;
while (scanf("%d %d", &n, &m) == 2)
{
if (n == 0)
{
printf("0\n");
continue;
}
if (n < 0)
{
printf("-");
n = -n;
}
DectoR(n,m);
printf("\n");
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。