我是靠谱客的博主 彩色高山,最近开发中收集的这篇文章主要介绍C++ 面试题:求十进制转为2进制数中1的个数方法1(推荐)方法2方法3,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

方法1(推荐)

/*
双向队列  推荐
余数插入头部,从尾部逐渐取出
*/
void DecimalToBinary(int value)
{
	int num = 0;
	deque<int> deq;
	while (value != 0)
	{
		int pop = value % 2;        //取余数
		value /= 2;
		deq.push_front(pop);       //插入头部
	}
	//打印
	for (auto it = deq.begin(); it != deq.end(); it++)
	{
		cout << *it;
		if (*it==1)
		{
			++num;
		}
	}
	cout << endl;
	cout << num << endl;
}

方法2

/*
堆栈
*/
void DecimalToBinary(int value)
{
	//先进后出
	int num = 0;	
	stack<int> st,st2;
	while (value != 0)
	{
		int pop = value % 2;   //取余数
		value /= 2;
		st.push(pop);
		if (pop==1)            //计算1的个数
		{
			st2.push(pop);
		}
	}
	//打印
	while (!st.empty())
	{
		cout << st.top();
		st.pop();
	}
	cout << endl;
	cout << st2.size() << endl;
}

方法3

/*
vector 容器
*/
void DecimalToBinary(int value)
{
	int num = 0;
	vector<int> vec;
	while (value != 0)
	{
		int pop = value % 2;   //取余数
		value /= 2;
		vec.push_back(pop);
	}
	//打印
	for (auto it = vec.size(); it>0; it--)
	{
		if (vec[it-1]==1)
		{
			num++;            //计算1的个数
		}
		cout << vec[it-1];
	}
	cout << endl;
	cout << num << endl;
}

最后

以上就是彩色高山为你收集整理的C++ 面试题:求十进制转为2进制数中1的个数方法1(推荐)方法2方法3的全部内容,希望文章能够帮你解决C++ 面试题:求十进制转为2进制数中1的个数方法1(推荐)方法2方法3所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部