【发布时间】:2019-04-09 22:20:01
【问题描述】:
实现 inspect_bits 函数,检查给定数字在其二进制表示中是否包含 2 个或多个连续数字。如果是,函数应该返回 1。否则,它应该返回 0。
例如,inspect_bits(13) 应返回 1,因为它在其二进制表示 (1101) 中包含 2 个连续的。
该程序适用于某些数字,在本例中为 13 和其他一些数字,但是该程序不适用于“8”、“10”和其他一些数字。
#include <stdlib.h>
#include <stdio.h>
int inspect_bits(unsigned int number)
{
int arr[32];
int i=0,temp,c=0;;
while(number > 0)
{
arr[i] = number%2;
number = number/2;
i++;
}
for (int j=i-1; j>=0; j--)
{
temp = arr[j];
for (int k=j+1; k>0; k--)
{
if (temp==arr[k])
c++;
}
}
if (c != 0)
return 1;
else
return 0;
}
#ifndef RunTests
int main ()
{
printf("%d", inspect_bits(13));
}
#endif
【问题讨论】:
-
returning8和10是什么? -
提示:
c在什么条件下设置为非零值,在什么条件下设置为零? -
我会使用
&和可能的<<或>>运算符直接检查位。
标签: c function search binary decimal