zoukankan      html  css  js  c++  java
  • 征战蓝桥 —— 2016年第七届 —— C/C++A组第5题——消除尾一

    题目

    下面的代码把一个整数的二进制表示的最右边的连续的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;
    }
    

    注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

    代码

    #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;
    }
    
    
  • 相关阅读:
    Java Nashorn--Part 4
    Java Nashorn--Part 3
    Java Nashorn--Part 2
    Java Nashorn--Part 1
    Java 异步 IO
    代码天天写,快乐天天有!
    比迷路更可怕的,是对读书的迷失。
    《寄生兽》观后感
    浅谈生活
    8月份的尾巴
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338703.html
Copyright © 2011-2022 走看看