zoukankan      html  css  js  c++  java
  • 28-语言入门-28-1的个数

     
    描述
    小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗?

    输入
    第一行输入一个整数N,表示测试数据的组数(1<N<1000)
    每组测试数据只有一行,是一个整数M(0=<M<=10000)
    输出
    每组测试输出占一行,输出M的二进制表示中1的个数
    样例输入
    3
    4
    6
    7
    样例输出
    1
    2
    3
     
     
    代码:
     


    #include <stdio.h>

    //处理数据并打印结果
    static void handlerData(int number);

    int main()
    {
       
    int readLen = 0;
       
    scanf("%d",&readLen);
       
    getchar();
       
       
    while(readLen > 0)
        {
           
    int number = 0;
           
    scanf("%d",&number);
           
    getchar();
           
           
    handlerData(number);
           
            --readLen;
        }
       
       
    return 0;
    }


    //处理数据并打印结果
    static void handlerData(int number)
    {
       
    int count = 0;
       
    while(number > 0)
        {
           
    if(number % 2 == 1)
            {
                ++count;
            }
           
            number = number /
    2;
        }
       
       
    printf("%d ",count);
    }

     
    本题出错的地方在于0的处理。最开始的处理如下:

    //处理数据并打印结果
    static void handlerData(int number)
    {
       
    int count = 0;
       
    while(number > 1)
        {
           
    if(number % 2 == 1)
            {
                ++count;
            }
           
            number = number /
    2;
        }
       
    //number最后=11的个数需要额外加1
       
    if(number != 0)
            ++count;
       
       
    printf("%d ",count);
    }
     
    开始漏掉了0的处理,一直报错,后来找到错误,检查代码后,对代码优化,将终止循环的条件进行了优化。
     
     
    补充十进制转为二进制的方式:
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Java基础知识总结(绝对经典)
    mybatis注解详解
    div行内样式style常用属性
    php中json_decode()和json_encode()的使用方法
    java调用javascript :js引擎rhino
    DeleteDC() 与 ReleaseDC() 的区别 [转]
    non-manifold Mesh(非流形网格)
    C++静态成员函数小结 [转]
    C++ 类的静态成员详细讲解[转]
    CString 转 char*; wstring 转 string
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/5141886.html
Copyright © 2011-2022 走看看