五、题目:消除尾一
填空题
下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
00000000000000000000000001100111 00000000000000000000000001100000
00000000000000000000000000001100 00000000000000000000000000001100
请仔细阅读程序,填写划线部分缺少的代码。
#include <stdio.h>

void f(int x)
{
int i;
for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
printf(" ");

x = _______________________;for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);
printf("\n");

}

int main()
{
f(103);
f(12);
return 0;
}


分析思路:

  1. 这道题很明显是一道二进制的题目,观察第一个样例,将末尾的0变为1,第二个样例没有变化。 我是先把需要填空的那一行注释掉,在程序上运行一遍
#include <stdio.h>void f(int x)
{int i;for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);printf("   ");//x = _______________________;for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);printf("\n");
}int main()
{f(103);f(12);return 0;
}

  1. 运行后发现输出结果与输入结果一致,所以填空部分应该填写是与第一个样例怎么消除1部分的代码。
  2. 二进制学过基本的运算
    举例:1010,先进行减1,在进行加1
  3. 找到规律:减法操作由0变为1,加法操作与运算由1变为0

    所以此处就是这个式子加法与运算,加一个1,就可以消除末尾的1,变为0
    代码:
#include <stdio.h>void f(int x)
{int i;for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);printf("   ");x =x&(x+1); for(i=0; i<32; i++) printf("%d", (x>>(31-i))&1);printf("\n");
}int main()
{f(103);f(12);return 0;
}

答案:x&x+1

2016蓝桥杯C++A:消除尾一(二进制运算)相关推荐

  1. 2016蓝桥杯C组C/C++决赛(公费旅游)总结

    作为一个普通二本院校的专科生,我已经在学校附近一家手游公司实习半年多了.先说下自己的情况吧,我们学校一直对ACM这一块儿不重视,毕竟愿意学算法的人少之又少,大部分学生更愿意毕业前培训一下到北上广造假工 ...

  2. 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题

    2016年第七届蓝桥杯java B组省赛试题 1-3.结果填空 4-5.代码填空 6-7.结果填空 8-10.程序设计 1.煤球数目  (结果填空) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, ...

  3. 2016蓝桥杯java试题_2016年第七届蓝桥杯JavaB组省赛试题解析

    题目及解析如下: 题目大致介绍: 第一题到第三题以及第六题.第七题是结果填空,方法不限只要得到最后结果就行 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功 第八题到第十题是编程题,要求编程 ...

  4. 2016蓝桥杯国赛 JAVA C组第五题 路径之谜

    蓝桥杯确实很暴力... 路径之谜 小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士 ...

  5. 2016蓝桥杯A组第十题 最大比例

    最近准备蓝桥杯比赛,看了去年蓝桥杯A组初赛的试题,最后一题花费了很多时间才找到思路.本人也是刚学习算法,很多都不懂,只好班门弄斧,各位大牛见笑了. 直接上题: X星球的某个大奖赛设了M级奖励.每个级别 ...

  6. [蓝桥杯2018初赛]乘积尾零-数论

    题目描述 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 61 ...

  7. [蓝桥杯2018初赛]乘积尾零

    乘积尾零 题目描述 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 79 ...

  8. 蓝桥杯练习题十一 - 乘积尾零(c++)

    题目如下 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 61 ...

  9. 2016蓝桥杯省赛---java---C---10(密码脱落)

    题目描述 思路分析 将字符串反转,后寻找到最长子串,然后用字符串长度减去最长字串长度即可. 代码实现 package lanqiao;import java.util.Scanner;public c ...

最新文章

  1. ST17H26只pwm波形特征
  2. 怎么用js实现jq的removeClass方法
  3. ONVIF Device Manager修改设备密码
  4. MUI 列表组件:文字居左中右(排版) - 代码篇
  5. java 事件cancel_Activiti结束事件(End Event)
  6. C++基础教程之函数
  7. 微软Azure Services Bus中的工作流
  8. @PropertySource 解析 yml 配置文件,自定义解析 yaml 工厂类
  9. oracle中同义词总结,ORACLE同义词总结
  10. 计算机专业交互式教学课件制作,简易交互式课件的制作
  11. 自动驾驶4WS车辆路径跟踪最优控制算法仿真
  12. Handler 机制简介
  13. 浏览器内核(引擎)及css前缀
  14. 腾讯无限法则有几个服务器,腾讯《无限法则》亚服即将开测!PC配置需求公布,竟无官方中文!...
  15. L1-009 N个数求和 (20分)【附测试】
  16. 手把手教你查看常用理财工具
  17. 周小川深度解读:DC/EP和数字人民币e-CNY
  18. javaSE探赜索隐四<数组>
  19. jquery中ajax中的参数,jquery中的ajax参数
  20. TypeError: unbound method a() must be called with A instance as first argument (got nothing instead)

热门文章

  1. [转载]基于Stm32,LD3320的非特定语音识别USB HID Keyboar
  2. 在线教育行业APP高效开发解决方案
  3. Oracle创建数据库出错,oracle 10g dbca创建数据库出错 急急急
  4. 前端面试知识点归纳:vue,react,webpack,bable,项目开发
  5. vue router.beforeEach跳转路由验证用户登录状态
  6. PYTHON笔记 面向对象程序设计
  7. 最简单的基于FFmpeg的移动端例子:Android 推流器
  8. jquery 把元素移动到另外一个元素里面
  9. matlab 数字字母,MATLAB读取txt(包含字母和数字)
  10. java system datetime_Java8新特性时间日期库DateTime API及示例