十进制到二进制的实现不能完全适用于我大学的检查器。问题或提示可能是什么

Decimal to binary implementation can't fully work on my university's checker. What can be the problem or the hint

本文关键字:问题 是什么 检查 提示 实现 二进制 不能 十进制 适用于 大学      更新时间:2023-10-16

我正在尝试解决由我的大学代码检查器测试的一个非常简单的任务。该代码是关于十进制到二进制算法的 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;
}

此代码需要 [1, 16] 中的整数输入,正如您可以从此注释"log_2(16(+1"中假设的那样。它为所有 16 个数字生成正确的结果

如果您给我们一些具体的例子来说明它在哪里有效和在哪里不起作用,那将很有帮助。

乍一看,一切对我来说都很好,除了 a=0(你可以放一个 do-while 而不是一个 while(,除了你对无法处理符号的代码使用有符号变量的事实。