c语言的简单程序问题

输入一个整数(int类型)a,输出a的二进制表示中0的位数, 一个空格,及0的位数在总位数中的占比(保留2位小数 .xx%)。

不断对a进行求余2,统计余数是0的数量。


#include <stdio.h>
int main()
{
    int n,zero=0,all=0;
    scanf("%d",&n);
    while(n>0)
    {
        if(n%2==0)
            zero++;
        all++;
        n/=2;
    }
    printf("%d %.2f%%",zero,100.0*zero/all);
    return 0;
}