中易网

C语言编译中的进制转换问题

答案:2  悬赏:70  
解决时间 2021-03-22 10:23
进制转换
运行时间限制: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提供
最佳答案
#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;
}
全部回答
错在》 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"); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
被熟人告白,求告知委婉有效的拒绝方法。最好
谁知道少年包青天第一部,第二部,第三部有什
比基因还小的单位是什么?比夸克还小的东东是
强电解质的定义是什么?谢谢
汽车维修厂搬迁怎么发短信告知老客户
高二能参加高考吗?
华美椰子味曲奇750克什么价格
2016永州红网八中李达班报名截止时间
顺产母乳喂养怎样减肥的呢?产后身材还是没有
perl往mysql添加中文出现????,如何解决?
列车中车辆的连挂是如何规定的?
北京宅急送的待遇问题
去七宝古镇坐几号线最快?而且不要转线
我刚买回电视卡,老公就买回电视了,我想把电
爱普生喷头f186000哪里买正品
推荐资讯
烧肉的做法怎样煮好吃
河北劳动关系职业学院环境怎么样
赛尔号战队要塞怎么摆最好(图片)
炼狱蝰蛇他们无法识别是怎么搞的?
新朗逸落地价最低多少钱
雨卜民族风情旅游度假村地址在什么地方,我要
如何使用Blender 2.5或2.65 导出mesh
哪有关于评论秦重和莘瑶琴的爱情的论文。特别
时光不矜持微盘
QQ钱包怎么签到
(2006?大连)小明家为了改善居住条件,计划
题目是二个字,有46个字的古诗有哪些
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?