只适用于正整数的代码:
#include<stdio.h>
int main(void)
{
int num = 0, count = 0;
printf("Enter a positive integer: ");
while(scanf("%d", &num) == 1 && num > 0)
{
count = 0;
while (num)
{
if (num % 2 == 1)
{
count++;
}
num = num / 2;
}
printf("%d\n", count);
printf("Enter a positive integer: \n");
}
return 0;
}
结果:
Enter a positive integer: 2
1
Enter a positive integer:
3
2
Enter a positive integer:
4
1
Enter a positive integer:
q
可以适用所有整数的代码:
#include<stdio.h>
int main(void)
{
int num = 0, count = 0;
printf("Enter an integer: ");
while(scanf("%d", &num) == 1 && num > 0)
{
count = 0;
for (int i = 0; i < sizeof(int); i++)
{
if (1 == ((num >> i) & 1))
count++;
}
printf("%d\n", count);
printf("Enter a positive integer: \n");
}
return 0;
}
分析: