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