欢迎光临散文网 会员登陆 & 注册

1070 十进制转二进制

2021-10-27 17:32 作者:羽走  | 我要投稿


题目描述

输入一个非负十进制整数,将其转换为二进制形式输出。

输入

一个非负整数n (0<=n<2^31)。

输出

对应的二进制形式。

样例输入

样例输出

        此题为数组题目的第一题,对于刚刚接触数组的同学,难度可能有那么一点大,不知道如何逆序输出,还有两种特殊情况,不知道二进制如何计算......也许都是同学们编写程序中出现过的问题。但是,这些问题,都会在这里得到解决。

        【思路】

        想要做出来此题,必须要明白二进制算法,不然此题无法做出来。至于二进制如何计算可以自行百度,不过在这里说一下需要注意的地方。

        二进制的算法:数字每次除以2,第一次的余数作为该数二进制数的个位数,依次往后类推,直到该数字被除到只剩下0或者1,即可结束循环,进行逆序输出。

        那么新的问题又来了,如何逆序输出?

        我们使用循环的时候,应该有使用    i++,在这里,计算机会记住你 i 循环后的值,你可以直接使用一个while循环,i--,输出数组,即可得到该数字的二进制数字。

        两个特殊数字,不要忘了检验特殊状况。

        当up主第一次拿着代码去提交时,发现出现答案的错误的问题,那时我觉得我的代码没有问题,但是转念一想,还有比2小的数字,除以2之后可能出现错误。

        没错,就是0和1,这两个数字的二进制数都是他们本身,所以可以直接输出。


        在这里感谢一位仁兄,那天当我给他讲了这个题之后,那位仁兄说:“emmm,听懂了,但是我觉得你的代码不够简洁,我回去拿你的代码改改。

        不知道仁兄改了没有,但是在修改的过程中,我发现原来的那个代码并不难能解决1的问题,虽然修的更加复杂了,但是完善性可以说是最佳了,期待那位仁兄的简洁答案!

        【解答】

        最后讲一下数组长度的问题吧,只要不是题目要求,一般可以不用定义那么大,容易数组超限,为了标准,我们可以考虑宏定义常量解决数组长度问题(宏常量可以定义100或50,一般不要特别大的),定义变量容易出问题。

        因为oj的1070之后的题目数组难度突然增大,所以 仍然有不明白的地方的同学可以 评论区提出问题,up主帮忙解决。



1070 十进制转二进制的评论 (共 条)

分享到微博请遵守国家法律