进制转换
运行时间限制:1000MS 运行内存限制:65536KByte
总提交:121 测试通过:38
时间限制(Java):10000MS
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
样例输入
7 2
23 12
-4 3
样例输出
111
1B
-11
题目来源
HDOJ C语言练习题, crq提供
C语言编译中的进制转换问题
答案:2 悬赏:70
解决时间 2021-03-22 10:23
- 提问者网友:唤魂
- 2021-03-22 04:08
最佳答案
- 二级知识专家网友:末路丶一枝花
- 2021-03-22 05:40
#include
#include
void ttor(int n, int r)
{
if (n)
{
ttor(n / r, r);
printf("%c", n % r > 9 ? n % r - 10 + 'A' : n % r + '0');
}
}
int main(void)
{
int n;
int r;
while (scanf("%d%d", &n, &r) != EOF)
{
if (n > 0)
ttor(n, r);
else if (!n)
putchar('0');
else
{
putchar('-');
ttor(-n, r);
}
putchar('\n');
}
return 0;
}
#include
void ttor(int n, int r)
{
if (n)
{
ttor(n / r, r);
printf("%c", n % r > 9 ? n % r - 10 + 'A' : n % r + '0');
}
}
int main(void)
{
int n;
int r;
while (scanf("%d%d", &n, &r) != EOF)
{
if (n > 0)
ttor(n, r);
else if (!n)
putchar('0');
else
{
putchar('-');
ttor(-n, r);
}
putchar('\n');
}
return 0;
}
全部回答
- 1楼网友:伤口狠精致
- 2021-03-22 06:05
错在》 for ( count = 1; num != 0; count++ )
{
y = num % 2;
num /= 2;
printf ( "%d" , y );
}
你输出的是按照余数的先后顺序输出的,但是十进制转化成二进制时,应该按照余数的逆顺序输出的,你弄错了顺序,还有scanf ( "%d" &nuum )少了一个逗号,我写的程序给你参考下吧!保管正确。
#include
void main ()
{
int count,num,y[1000],i=0;
printf ( "enter num:" );
scanf ( "%d",&num );
for ( count = 0; num != 0; count++ )
{
y[i++] = num % 2;
num /= 2;
}
for(i=count-1;i>=0;i--)
printf("%d",y[i]);
printf("\n");
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯