题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

思路

  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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务