将一个整数变换为16进制(不得使用系统函数)

将一个整数转换为16进制(不得使用系统函数)
将一个整数转换为16进制(不得使用系统函数).希望是c++版本。谢谢

------解决方案--------------------
 告诉你一个思路
 假设被转换的数为n,首先将其对16取模,得到的结果就是对应16进制的最低位
 将n除以16,得到的结果取整再对16取模,得到的结果是对应16进制的次低位
 如此重复做以上两步,既可以得到最终结果
 
 给你一个伪代码,自己转换成C++代码吧
 ConvertInt2Hex:
 dim n,hexStr
 loop:
      if n == 0
        break;
    dim tmp = n % 16
    if tmp >= 0 && tmp <= 9
       hexStr <- hexStr.append('0' + tmp)
    else
         hexStr <- hexStr.append('a'+tmp-10)
    n <- n / 16
 end loop
 reverse(hexStr)
 end ConvertInt2Hex
------解决方案--------------------

#include <stdio.h>
#include <string.h>
int main()
{
int input=0;
int temp=0;
int i=0;
int j=0;
char result[100];
printf("input a number:\n");
scanf("%d",&input);
while(input!=0)
{
temp=input%16;
if(temp>=0 && temp<10)
{
result[i]=temp+'0';
i++;
}
else
{
result[i]=temp+'A'-10;     
i++;
}
input=input/16;

}
result[i]='\0';
for (j=strlen(result)-1;j>=0;j--)
{
printf("%c",result[j]);
}
printf("\n");

return 0;

}

------解决方案--------------------

# include <iostream>
# include <sstream>

using namespace std;

int main()
{
    const char map[] = "0123456789ABCDEF";
    unsigned int i = 0xABCDEF12;
    stringstream buffer;

    while (i)
    {
        buffer << map[i % 16];
        i /= 16;
    }
    buffer << ends;

    string tmp = buffer.str();
    string s(tmp.rbegin(), tmp.rend());

    cout << s << endl;

    return 0;
}