- 一、题目描述
- 二、解题思路
- 三、解题代码
- 四、写在最后
二、解题思路循环输入。给定一个十进制数 d d d和一个进制 X ( 2 ≤ X ≤ 16 ) , X(2≤X≤16), X(2≤X≤16),输出它的 X X X进制表示。当没有任何输入时,程序结束。
- 除留余数法。模对应的进制,不断取留余数,并且除上对应的值,直到商为0停止。将余数逆序排列得到的就是对应转换后的值。
#include#include void Print(int num) { if (10 <= num && num <= 16) { printf("%c",num - 10 +'A'); } else { printf("%d",num); } } int main() { int ans[100]; int d,x; while(scanf("%d%d",&d,&x)!= EOF) { memset(ans,0,100); if (0 == d) { printf("0n"); continue; } else if (d < 0) { printf("-"); d = -d; } while(d) { ans[++ans[0]] = d % x; d /= x; } for(int i = ans[0]; i > 0; --i) { Print(ans[i]); } printf("n"); } return 0; }
这里的除留余数法要是还不理解的话,不要着急,举两个例子看一看,比如说举5和7的例子,自己动手在纸上演算一下除留余数法,然后对着代码理解一下,要是还不理解可以在文章下面评论留言或者私信作者。
四、写在最后该文章内容是我阅读了CSDN博主英雄哪里出来的博文后,自己记录的一些观点和想法,希望对大家有帮助。英雄哪里出来的对应博文地址:传送门
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)