解题思路
1、整数转二进制,二进制换算整数 是每位上使用2的位数次方 相加。 反而言之,将整数不断与2 先相除,如果能被整除则 相关位为0,反之则为1 
2、第一个while 循环是判断输入数据是否合法, 第二个while 循环用来判断Nums 为0 时,整除运算停止。

题目拓展: 用这个解法可以进行不同进制之间的换算 判断, 例如 整数转成 8进制有多少个1, 转成 16进制有多少个A  等等题目变形

#include <stdio.h>

int main(void) {
    int Nums = 0;
    while(scanf("%d", &Nums) != EOF) {
        int Times = 0;
        while (Nums != 0) {
            if(Nums % 2 == 1) Times++;
            Nums = Nums/2;
        }
        printf("%d\n", Times);
    }
    return 0;
}