[华为机试] 计算二进制数中1的个数

将整数转化为二进制数,要除2取余,余1这一位就是1,整除这一位就是0,存在两种特殊情况,就是输入的数是1或者0,因为<2所以没法做整除判断,所以要在程序开头做个判断,如果输入的是0,直接返回1的个数为0,因为整除法得到1的个数要比正常的少一个,所以最终要给1的个数+1,所以输入的数是1也可以算到这种情况里

 

题目描述

请实现如下接口

public static int findNumberOf1( int num)

{

/* 请实现 */

return 0;

} 譬如:输入5 ,5的二进制为101,输出2

 

涉及知识点:
 
注意多组输入输出!!!!!!

 

 

#include<iostream>

using namespace std;

int FindNumOfOne(int InputNum);

int main(void)
{
    int InputNum;
    while(cin>>InputNum)
        cout<<FindNumOfOne(InputNum)<<endl;
    
    return 0;
}

int FindNumOfOne(int InputNum)
{
    int OneNum=0;
    if(0==InputNum)
        return OneNum;
    while(0!=InputNum/2)
    {
        if(1==InputNum%2)
            OneNum++;
        InputNum/=2;
    }
    return OneNum+1;
}

 

 

 

 

#include<iostream>
#include<vector>

using namespace std;

int main(void)
{
    int InputNum;
    int Temp;
    cin>>InputNum;
    
    std::vector<int> BinaryOne;
    while(0!=InputNum/2)
    {
        Temp=InputNum%2;
        if(Temp==1)
            BinaryOne.push_back(Temp);
        InputNum/=2;
    }
    cout<<BinaryOne.size()+1<<endl;
    return 0;
}

 

题目描述

请实现如下接口

public static int findNumberOf1( int num)

{

/* 请实现 */

return 0;

} 譬如:输入5 ,5的二进制为101,输出2

 

涉及知识点:
 
注意多组输入输出!!!!!!
posted @ 2020-09-20 10:35  Wangtn  阅读(408)  评论(0编辑  收藏  举报