#设计算法,把十进制整数转换为二至九进制之间任一进制输出。#实现:把整数除以新的进制数,所得的余数入链栈TransStack,再取其商依次除以新进制数,所得余数依次入栈。最后依次出栈输出,即得整数转换为其他进制的结果。
#include<iostream>
using namespace std;
struct Node{
int data;
Node *next;
};
class TransStack{
private:
Node *top;
public:
TransStack(){top=NULL;}
~TransStack(){}
void push(int a){
Node *s=new Node;
s->data=a;
s->next=top;
top=s;
}
int pop(){
if(top==NULL) throw"\n\t\t下溢!\n\t\t";
Node *p=top;
int x=p->data;
top=p->next;
delete p;
return x;
}
};
int main(){
int n,m,a,b;
cout<<"\n\t\t请输入一个十进制的整数:";
cin>>n;
a=n;
cout<<"\t\t转换为几进制(请输入2~9的阿拉伯数字):";
cin>>m;
TransStack t;
try{
if(m<2||m>9) throw"\n\t\t转换进制异常!\n";
}catch(char *p){
cout<<p;
}
if(m>1&&m<10){
for(;;){
b=a%m; //取余数
a=a/m; //取商
t.push(b);
if(!a) break;
}
try{
cout<<"\n\t\t"<<n<<"转换为"<<m<<"进制为:";
for(;;){
cout<<t.pop();
}
}catch(...){
cout<<"\n\n\t\t";
}
}
return 0;
}
#运行结果: