描述:
给定一个十进制整数N,求其对应2进制数中1的个数输入第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数。输出N行,每行输出对应一个输入。样例输入
4 2 100 1000 66
样例输出
1 3 6 2
思路:本题很简单辗转相除判断如果是1,计数器++就得了,没什么好好讲的。不过要特别注意:0要单独考虑,否则会超时的!!
代码如下:
1 #include<stdio.h> 2 int main() 3 { 4 int n,a,i,t; 5 scanf("%d",&n); 6 for(i=0;i<n;i++) 7 { 8 t=0;//计数器 9 scanf("%d",&a); 10 if(a==0) printf("0\n");//如果是0,输出(这一步很重要)!! 11 else 12 { 13 while(a!=1) 14 { 15 if(a%2==1) 16 { 17 t++; 18 } 19 a=a/2; 20 } 21 t++; 22 printf("%d\n",t); 23 } 24 } 25 return 0; 26 }