思路

  1. 输入一个 int 型的正整数
  2. 将10进制转为2进制,方法是循环和2取余,判断是否为0,为0则写0,否则写1
  3. 在赋值1时,加个计数器
  4. 特殊处理最后余数为1,多加1个
  5. 输出计数器的值

题解

#include<stdio.h>
#include<string.h>

int main()
{
   // 描述
// 输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
    int val;
    int num[32]={0};
    int i=0,cnt=0;
    scanf("%d",&val);
    
    while(i<32){
        
        if(val%2 == 0){
            num[i] = 0;
        }else{
            num[i] = 1;
            cnt++;
        }
        i++;
        val = val/2;
        if(val==1){
            num[i] = 1;
            cnt++;
            break;
        }
//         printf("%d",num[i]);
    }
    printf("%d\n",cnt);

    return 0;
}