#include <stdio.h> /* 各进制转换方法可参考图示: https://jingyan.baidu.com/article/495ba84109665338b30ede98.html 十进制整数转其他进制: 如二进制,则除2取余,直至商为0得到最后一个余数; 对应二进制数为除2过程中所得余数倒着排列,如所得余数依次为011,则对应二进制数为110 其他进制之间的转换可借助十进制作为中转,先转为十进制,再转到对应进制,感觉应该会更方便(按权展开相加即可得到十进制数) 还可借助转换说明:%d或%i(十进制),%x或%X(十六进制),%o(八进制)等得到对应进制 */ int findNumberOf1(int num) { int count=0; // 如1: 1/2=0...1 while(num){ if(num%2==1){ count++; // printf("%d\n",count); } num /= 2; } return count; } int main() { int n; while(scanf("%d",&n)!=EOF){ int ret; ret = findNumberOf1(n); printf("%d\n",ret); } return 0; }