将十进制数转换为二进制数和十六进制数

题目:将十进制数转换为二进制数和十六进制数

stack的先进后出原则,符合十进制转二进制的转换规则。因此在解题时考虑使用stack。
同时使用string进行结果存储。
注意:1.十六进制数要在开头添加0x。2.string的末尾要加’\0’

string get2string(long num)
{
stack temp;

while (num)
{
    int tmp = num % 2;
    num /= 2;
    temp.push(tmp);
}

int len = temp.size();
string res(len + 1, '0');
int i = 0;
while (!temp.empty()){
    res[i] = res[i] + temp.top();
    temp.pop();
    i++;
}

res[len] = '\0';
return res;

}

string get2string(long num)
{
stack temp;

while (num)
{
    int tmp = num % 2;
    num /= 2;
    temp.push(tmp);
}

int len = temp.size();
string res(len + 1, '0');
int i = 0;
while (!temp.empty()){
    res[i] = res[i] + temp.top();
    temp.pop();
    i++;
}

res[len] = '\0';
return res;

}

int main()
{
long num = 2;
while (cin >> num)
{
string res = get2string(num);
string res16 = get16string(num);
cout << res << endl;
cout << res16 << endl;
}
getchar();
return 0;
}

你可能感兴趣的:(面试常见算法题)