题目描述
光明大厦的管理者发现员工下班后经常不关灯,造成极大的浪费。为了节约用电,大厦引进了一个叫做TLS的新仪器,该仪器能够准确显示每个楼层各个房间灯的开关状态。TLS的液晶显示屏宽度有限,所以TLS显示屏只用来显示十进制数,不显示二进制数。
例如:大厦的某一层有4个房间。第 1、4 房间亮灯,第 2、3 房间灯没有开。则用二进制表示为1001,但是在TLS液晶显示屏为 9。现在你能帮助大厦管理者设计一个程序,使得他看见TLS显示屏上的数字,就能够判定出哪些房间没有关灯吗?并且计算出亮灯的总数吗?
给定一个十进制整数N,求其对应二进制数中1的个数
输入
第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数,表示TLS显示的十进制数。
输出
N行,每行输出对应一个输入,表示实际亮灯的个数。
样例输入
4
2
100
1000
66
样例输出
1
3
6
2
参考代码
#include "stdio.h"
int main()
{
int n,i,a;
scanf("%d",&n);
while(n--)
{
i=0;
scanf("%d",&a);
while(a!=0)
{
if(a%2==1)
i++;
a/=2;
}
printf("%dn",i);
}
return 0;
}
解析
暂无