1070 十进制转二进制

题目描述
输入一个非负十进制整数,将其转换为二进制形式输出。
输入
一个非负整数n (0<=n<2^31)。
输出
对应的二进制形式。

样例输入

样例输出


此题为数组题目的第一题,对于刚刚接触数组的同学,难度可能有那么一点大,不知道如何逆序输出,还有两种特殊情况,不知道二进制如何计算......也许都是同学们编写程序中出现过的问题。但是,这些问题,都会在这里得到解决。
【思路】
想要做出来此题,必须要明白二进制算法,不然此题无法做出来。至于二进制如何计算可以自行百度,不过在这里说一下需要注意的地方。
二进制的算法:数字每次除以2,第一次的余数作为该数二进制数的个位数,依次往后类推,直到该数字被除到只剩下0或者1,即可结束循环,进行逆序输出。
那么新的问题又来了,如何逆序输出?
我们使用循环的时候,应该有使用 i++,在这里,计算机会记住你 i 循环后的值,你可以直接使用一个while循环,i--,输出数组,即可得到该数字的二进制数字。
两个特殊数字,不要忘了检验特殊状况。
当up主第一次拿着代码去提交时,发现出现答案的错误的问题,那时我觉得我的代码没有问题,但是转念一想,还有比2小的数字,除以2之后可能出现错误。
没错,就是0和1,这两个数字的二进制数都是他们本身,所以可以直接输出。
在这里感谢一位仁兄,那天当我给他讲了这个题之后,那位仁兄说:“emmm,听懂了,但是我觉得你的代码不够简洁,我回去拿你的代码改改。”
不知道仁兄改了没有,但是在修改的过程中,我发现原来的那个代码并不难能解决1的问题,虽然修的更加复杂了,但是完善性可以说是最佳了,期待那位仁兄的简洁答案!
【解答】
最后讲一下数组长度的问题吧,只要不是题目要求,一般可以不用定义那么大,容易数组超限,为了标准,我们可以考虑宏定义常量解决数组长度问题(宏常量可以定义100或50,一般不要特别大的),定义变量容易出问题。
因为oj的1070之后的题目数组难度突然增大,所以 仍然有不明白的地方的同学可以 评论区提出问题,up主帮忙解决。
