gpt4 book ai didi

c - 我的 Inspect Bits 函数代码测试结果失败

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:49 24 4
gpt4 key购买 nike

以下代码用于 https://www.testdome.com/for-developers/solve-question/9780 中给出的测试样本

问题是:实现 inspect_bits 函数,检查给定数字在其二进制表示中是否包含 2 个或更多个连续的数字。如果是,则该函数应返回 1。否则,它应返回 0。

例如,inspect_bits(13) 应该返回 1,因为它在其二进制表示 (1101) 中包含 2 个连续的 1。

我的代码是:

#include <stdlib.h>
#include <stdio.h>

int inspect_bits(unsigned int number)
{
unsigned int ref = 1;
int comp;

for (int i = 0; i< sizeof(number) * 8; i++)
{
int a = number& (ref << i);
printf("%d: a is %d\n", i, a);
int b = number& (ref << (i + 1));
printf("%d: b is %d\n", i, b);
if ((a != 0) && (b != 0))
{
return 1;
}
}
return 0;
}

#ifndef RunTests
int main()
{
printf("%d", inspect_bits(13));
}
#endif

结果看起来没问题,但是系统提示: 各种数字:错误答案

你能帮我修改一下代码吗?

问候

最佳答案

老实说,我认为这是测试站点本身的问题。您的代码会为提供给它的每个测试用例返回正确的结果,我什至这样修改了代码:

int inspect_bits(unsigned int number)
{
for (int i = 0; i < sizeof(number) * 8; ++i) {
if (((number & (1 << i)) != 0) && ((number & (1 << (i + 1))) != 0)) {
return 1;
}
}
return 0;
}

测试用例返回 1,其中有 2 个二进制值在一起,适用于 3 及以上;但是,在测试站点上运行 代码时会出现Various Numbers 测试失败的错误。

有趣的是,使用这段代码:

int inspect_bits(unsigned int number)
{
while (number >= 3) {
if ((number & 3) == 3) { return 1; }
number >>= 1;
}
return 0;
}

它做的事情基本相同,只是对单个数字使用位移位,并且测试通过 100% ..

您可以提交一封电子邮件来解释错误;但除此之外,我不确定它还能是什么。

希望对您有所帮助。

关于c - 我的 Inspect Bits 函数代码测试结果失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45025166/

24 4 0
文章推荐: c - lseek 稀疏文件与常规文件的比较导致意外结果?
文章推荐: javascript - 如何将 mongo objectId 字段设置为 null 或为空甚至删除该字段?
文章推荐: javascript - 如何将标题设置为 /
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com