高分悬赏:统计2的N次方的数的个数

xlu0706 2013-03-28 07:58:09
一维数据中,统计是2的N次方的元素的个数,其中N=0,1,2...,以下是本人写的程序,请各位大虾指导一下有没有bug!

##include "stdio.h"

#define N 5

int main()
{

int iArray[N];
int i = 0;
int nCount = 0;

for(i = 0;i < N && (scanf("%d",&iArray[i]) == 1);i++);

for(i = 0;i < N;i++)
{
if(!(iArray[i] & (iArray[i]- 1)))
if(iArray[i] != 0)
nCount++;
}

printf("%d\n",nCount);

return 0;
}
...全文
318 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlu0706 2013-04-05
  • 打赏
  • 举报
回复
引用 7 楼 li744831579 的回复:
循环里你这样写,因为任何数 位与0都是0, C/C++ code?1234567 for(i = 0;i < N;i++) { if(iArray[i]>1){ if(!(iArray[i] & (iArray[i]- 1))) if(iArray[i] != 0) nCount++; ……
引用 8 楼 wxsxiaoK 的回复:
2^n肯定是10000...形式-1肯定是01111...与操作之后肯定是0了
有道理,受教了了
云斜月 2013-04-04
  • 打赏
  • 举报
回复
循环里你这样写,因为任何数 位与0都是0,
 for(i = 0;i < N;i++)
    {   if(iArray[i]>1)
{
        if(!(iArray[i] & (iArray[i]- 1)))
            if(iArray[i] != 0)
                nCount++;       
 }   }
xlu0706 2013-04-04
  • 打赏
  • 举报
回复
引用 1 楼 zhcosin 的回复:
这么小的程序你运行下不就知道了,有你这发帖的时间我都能解决五个这样的小程序了。
如果运行还能解决问题,我就不需要发帖了!问题在于样例通过率%75
cmail2005 2013-04-04
  • 打赏
  • 举报
回复
除了0,还有1也要排除吧。 if((iArray[i]) != 0 && (iArray[i]!=1)); 把你的没通过的样例贴上来看看。
wxsxiaoK 2013-04-04
  • 打赏
  • 举报
回复
2^n肯定是10000...形式-1肯定是01111...与操作之后肯定是0了
mujiok2003 2013-03-28
  • 打赏
  • 举报
回复
输合法的scanf次数可能不是N
woaishuo2011 2013-03-28
  • 打赏
  • 举报
回复
鼓励一个。。。加油加油。。。
漫步者、 2013-03-28
  • 打赏
  • 举报
回复
算法比较新颖,你要是要调试有没有Bug,你要考虑的情况会有很多,比如溢出等
prajna 2013-03-28
  • 打赏
  • 举报
回复
if (i && !(i&(i-1))) { //i 為 2 的 n 次方 } 算法很好。
zhcosin 2013-03-28
  • 打赏
  • 举报
回复
这么小的程序你运行下不就知道了,有你这发帖的时间我都能解决五个这样的小程序了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧