怎么调用bitcount函数输入任意数字得书中0的个数

怎么调用bitcount函数输入一个整数得出该数中0的个数

你bitcount是计算数n的二进制中有多少个0还是10进制中有多少个0?
如果是二进制中有多少个0,不足32位的是否需要补全,比如8的二进制是1000,函数要返回3还是返回31?
三种代码都给你贴上了,你根据需要选择吧。

#include <stdio.h>
//返回二进制中0的个数,8的二进制是1000,返回3
int bitcount_1(int n)
{
    int t;
    int cnt = 0;
    while(n)
    {
        t=n%2;
        if(t==0) cnt++;
        n/=2;
    }
    return cnt;
}

//返回二进制中0的个数,8的二进制是1000,返回31
int bitcount_2(int n)
{
    int t;
    int cnt = 0;
    while(n)
    {
        t=n%2;
        if(t==1) cnt++;
        n/=2;
    }
    return (32-cnt);//整数4个字节共32位,减去1的个数
}
//返回n的十进制中有多少个0
int bitcount_3(int n)
{
    int t,cnt=0;
    while(n)
    {
        t = n%10;
        if(t==0)
            cnt++;
        n/=10;
    }
    return cnt;
}

int main()
{
    int n;
    scanf("%d",&n);
    printf("%d中含有%d个0\n",n,bitcount_1(n));
    printf("%d中含有%d个0\n",n,bitcount_2(n));
    printf("%d中含有%d个0\n",n,bitcount_3(n));
    return 0;
}




bitcount是自定义函数么?