我正在尝试解决由我的大学代码检查器测试的非常简单的任务。该代码是关于十进制到二进制算法的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;
}
答案 0 :(得分:1)
此代码期望在[1,16]中输入整数,您可以从此注释“ log_2(16)+1”中假定。它会为所有16个数字产生正确结果。
答案 1 :(得分:0)
如果您为我们提供了有关它起作用和不起作用的具体示例,将很有帮助。
乍一看,除了a = 0(您可以放一个do-while而不是一会儿),以及您使用带符号变量的代码无法处理标志。