C++,十进制转为十六进制,为什么我的b[j]好像什么都没有输出?

运行后发现,十六进制那里只输出了一个换行,但是我已经把余数存在b[j]中了,可以告诉我一下错在哪里,怎么改吗?

img


#include
using namespace std;
int main()
{
int n;
cin>>n;
//十进制
cout<<n<<endl;
//八进制
int m,a[1000],i=0;
do
{
m=n/8;
a[i]=n%8;
n=m;
i++;
} while(m>0);
i--;
for(;i>=0;i--)
{
cout<<a[i];

}
cout<<endl; 
//十六进制
int p,q,j=0;
char b[1000];
do
{
    p=n/16;
    q=n%16;
    if(q<10) 
    {
        b[j]=q;
        j++;
        n=p;
    }
    else
    {
        b[j]='a'+p-10;
        j++;
        n=p;
    }
}while(p>0);
j--;
for(;j>=0;j--)
{
    cout<<j<<b[j]<<endl;
}
return 0;

}

n的值已经改变了。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^