C语言,函数实现将输入的整数表示成二进制,并统计其中1的个数

如题所述

//程序没有考虑非法输入,但实现了要求功能
#include <stdio.h>
void Convert(int n);
void Convert(int n)
{
int i=0,count=0,j,t;
int a[20]={0};
while(n!=1&&n!=0)//转换二进制
{
a[i]=n%2;
n=n/2;
i++;
}
if(n!=0)
a[i]=1;
t=i;
while(i!=-1)//输出二进制
{
printf("%d",a[i]);
i--;
}
for(j=0;j<=t;j++)//统计1的个数
{
if(a[j]==1)
count++;
}
printf("\n1的个数有:%d个",count);

}

void main()
{
int b;
printf("请输入整数: \n");
scanf("%d",&b);
Convert(b);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-09
#include <stdio.h>
void tenton(int n)
{
int i=0,a[20],sum =0;
while(n)
{
a[i]=n%2;
n/=2;
i++;
}
for(i-=1;i>=0;i--)
{
if(a[i] == 1) sum++;
printf("%d",a[i]);
}
printf("其中1的个数为 : %d\n",sum);
}
void main()
{
int n;
printf("input a number:");
scanf("%d",&n);
tenton(n);//函数调用
}本回答被网友采纳
第2个回答  2014-10-22
int count = 0;
int num = 123;
int i = 0;
for (i = 0; i < 32; i++) {
count += (num >> i) & 0x1;
}
printf("%d\n", count);