从十进制到二进制的实现不能完全在我大学的检查器上运行。可能是问题还是提示

时间:2019-09-16 18:15:41

标签: c++ binary decimal

我正在尝试解决由我的大学代码检查器测试的非常简单的任务。该代码是关于十进制到二进制算法的C ++实现。该代码不适用于所有情况,我正在提供我的代码,如果有任何注释,提示,请为我提供帮助。

代码:

#include <iostream>
using namespace std;
int main()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int a, rem;
    int i = 0;
    int b[5];//log_2(16)+1
    cin >> a;
    if (a < 17)
    {   
        while (a)
        {
            rem = a % 2;
            b[i++] = rem;
            a /= 2;
        }
        for (i = i - 1; i >= 0; i--)//i = i-1 because i 5.
        {
            cout << b[i];
        }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

此代码期望在[1,16]中输入整数,您可以从此注释“ log_2(16)+1”中假定。它会为所有16个数字产生正确结果

答案 1 :(得分:0)

如果您为我们提供了有关它起作用和不起作用的具体示例,将很有帮助。

乍一看,除了a = 0(您可以放一个do-while而不是一会儿),以及您使用带符号变量的代码无法处理标志。