[华为机试] 计算二进制数中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
涉及知识点:
注意多组输入输出!!!!!!
![](https://img2020.cnblogs.com/blog/901097/202009/901097-20200920103338572-1351199790.png)
#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
涉及知识点:
注意多组输入输出!!!!!!
无情的摸鱼机器