解题思路
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;
}