问题描述
- 数据结构栈实现进制转换遇到问题十进制数255 输出的十六进制数是F15F15 哪里错了
-
//进制转换函数
void conversion(int n,int r)
{
SqStack S;//构建一个栈
InitStack(S);
while(n)
{
Push(S,n%r);//数据入栈
n=n/r;
}
while(!StackEmpty(S))
{
SElemType e;
Pop(S,e);//数据出栈
switch(e)
{
case 0: break;
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
case 10: cout<<"A";
break;
case 11: cout<<"B";
break;
case 12: cout<<"C";
break;
case 13: cout<<"D";
break;
case 14: cout<<"E";
break;
case 15: cout<<"F";
break;
}
cout<<e;
}
cout<<endl;
}
解决方案
你的程序没错,只是cout<<e;这里多输出了一个原始值。
解决方案二:
竟然这么干?给你个参考
http://m.blog.csdn.net/blog/xiaofei2010/7434737
解决方案三:
想用数据结构的栈来实现进制转换就这样写的进制转换函数。二进制八进制都可以,但是十六进制有时会出错
解决方案四:
那应该怎么该 ,不能把cout<<e: 去掉吧,那要怎么改啊啊?
时间: 2024-08-29 04:47:25