题目
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例1
输入
5
输出
2
分析
1.涉及十进制转二进制;
2.注意不能用strlen求int数组的长度;也不能用sizeof(a)/sizeof(int)计算,这样结果为100.
3.因此,int数组的有效长度就是i。
#include<stdio.h>
#include<string.h>
int main(void)
{
int n, len;
int i = 0;
int count = 0;
int a[100];
scanf("%d", &n);
while (n != 0)
{
a[i] = n % 2;
n /= 2;
i++;
}
for (int j = 0;j < i;j++)
{
if (a[j] == 1)
count++;
}
printf("%d", count);
}