Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1436567
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-03-21 15:45:58

题目描述:
输入一个正整数,求该数二进制从左起第一个1后面0的个数
题目分析:
右移找到最后一个1 的位置,重新右移查询后面的0。通过两次循环实现。
代码:

点击(此处)折叠或打开

  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int m;
  5.     int i;
  6.     int flag = 0;
  7.     int count = 0;
  8.     scanf("%d",&m);
  9.     
  10.     for (i=0; i<32; i++)
  11.     {
  12.         if ( ((m>>i)&0x00000001) != 0 )
  13.         {
  14.             flag = i;
  15.         }
  16.     }
  17.     for (i=0; i<flag; i++)
  18.     {
  19.         if ( ((m>>i) & 0x00000001) == 0 )
  20.         {
  21.             ++count;
  22.         }
  23.     }
  24.     printf("%d\n",count);
  25.     return 0;
  26. }
注意:注意优先级执行顺序,不要省略括号,不仅是便于阅读,同时容易出错。
阅读(607) | 评论(0) | 转发(0) |
0

上一篇:OJ-名字的漂亮度

下一篇:OJ-字符串分割

给主人留下些什么吧!~~