10进制转2进制,并统计结果中0的个数与1的个数
使用栈实现
#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
void change(int n) {
stack<int> s;
vector<int> v;
int temp;
static int num_0 = 0;
static int num_1 = 0;
while (n != 0) {
temp = n % 2;
s.push(temp);
n /= 2;
}
while (!empty(s)) {
temp = s.top();
v.push_back(temp);
s.pop();
}
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it++) {
std::cout << (*it);
if (*it == 0)
num_0++;
}
num_1 = v.size() - num_0;
std::cout << std::endl;
std::cout << "0的个数:"<<num_0 <<std::endl;
std::cout << "1的个数:" << num_1 << std::endl;
}
int main() {
std::cout << "请输入要转化的十进制数:" << std::endl;
int n;
std::cin >> n;
change(n);
}