2016年蓝桥杯C语言大学A组题目5--去掉尾一
来源:互联网 发布:sql 字符串字段行转列 编辑:程序博客网 时间:2024/06/08 06:42
题目5.消除尾一
下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
00000000000000000000000001100111 00000000000000000000000001100000
00000000000000000000000000001100 00000000000000000000000000001100
请仔细阅读程序,填写划线部分缺少的代码。
#include<stdio.h>
voidf(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");
}
intmain()
{
f(103);
f(12);
return 0;
}
注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
看到题目的第一眼,有两个思路:
采取异或去一;
采取加一去一;
显然第二种想法是最简单实现的->(x+1);
拿103来举例子:
00000000000000000000000001100111->
00000000000000000000000001101000
后面红色标记意味着全部得变为0;
怎么变?这里采取&符号即可解决。
所以所填代码为:
x=x&(x+1);
1 0
- 2016年蓝桥杯C语言大学A组题目5--去掉尾一
- 2016年蓝桥杯C语言大学A组题目1--网友年龄
- 2016年蓝桥杯C语言大学A组题目2--生日蜡烛
- 2016年蓝桥杯C语言大学A组题目3--方格填数
- 2016年蓝桥杯C语言大学A组题目4--快速排序
- 2016年蓝桥杯C语言大学A组题目6--寒假作业
- 2016年蓝桥杯C语言大学A组题目7--剪邮票
- 蓝桥杯 2016-省赛-C语言大学A组-3题方格填数
- C语言笔试题目(一)
- 2015年 第六届蓝桥杯大赛决赛(软件类)C/C++大学A组 题目
- 小题目大学问--C语言输出问题
- [linux+c]C语言题目(一)
- 【C语言】题目1000:计算a+b
- 2015年蓝桥杯决赛 C/C++大学A组第一题
- 2016-省赛-C语言大学B组_凑算式
- c语言编程题目(一)
- 大学C语言程序
- 大学c语言程序
- Python print函数重定向
- jquery 调用子iframe页面中js的方法
- 始于颜值 敬于才华 合于性格 久于善良 终于人品
- Emacs学习总结
- 华为LiteOS、谷歌Brillo等都与实时嵌入式无关
- 2016年蓝桥杯C语言大学A组题目5--去掉尾一
- 全局和局部变量
- 关于单点登录统一认证的好的博客
- android 项目常用工具方法
- HashMap源码解析(一)
- 逻辑思维训练(二)
- JavaScript语法字面量
- ABAP中(生产订单、销售订单、内部订单)各自编号的数据字段类型
- 网页中启动客户端winForm应用程序