#include <stdio.h>
int c_sec(int source)
{
    int i=1;
    int s=0;
    while(i<=source)
    {
        if((source & i)>0) s++;
        i*=2;
    }
    return s;
}
int main(int argc, char *argv[])
{
    int i;
    for(i=0; i<100; i++)
    {
        printf("%d的二进制里面有%d个1\n",i,c_sec(i));
    }
    return 0;
}


=============================================================
#include <stdio.h>
int c_sec(int source,int rag[])
{
    int i=1;
    int s=0;
    int index=0;
    int j=0;
    while(i<=source)
    {
        if((source & i)>0)
        {
            s++;
            rag[j]=index;
            j++;
        }
        i*=2;
        index++;
    }
    rag[j]=9999;
    return s;
}
int main(int argc, char *argv[])
{
    int i;
    int rag[64]={0};
    for(i=1; i<50; i++)
    {
        for(int k=0;k<64;k++){rag[k]=0;}
        int s=c_sec(i,rag);
        printf("%4d的二进制里面有%d个1  分别位于 ",i,s);
        int j=0;
        while(rag[j]!=9999)
        {
            printf("D[%d]  ",rag[j]);
            j++;
        }
        printf("\n");
    }
    return 0;
}