算法: 1.利用辗转相除法求得每次的余数为8进制数; 2.所产生的8进制数是按从低位到高位的顺序产生的,利用栈的来处理很适合,不用在设计其他的算法颠倒输出了! 3.采用顺序栈简单灵活! 4.代码没有设计一个类的方法,(有点偷懒)但是思想还是c++根据行为,执行操作 #include<iostream> using namespace std; #define NULL 0 const int MAXSIZE = 100; typedef struct Node//定义栈的类型 { int data[MAXSIZE]; int top ; }Stack; Stack *create()//建立空栈 { Stack *p = new Stack; p->top = -1; return p; } Stack *Push(Stack *p , int X)//入栈 { p->top++; p->data[p->top] = X; return p; } Stack *Pop(Stack *p)//出栈 { cout<<p->data[p->top]; p->top--; return p; } int main () { int num = 0; cout<<"输入10进制数:"; cin>>num; Stack *p = create (); while (num) //入栈 { if (p->top == MAXSIZE -1) { cout<<"栈满输出不完整,扩大MAXSIZE!!!"; break; } else { Push(p , num % 8); num = num / 8; } } cout<<"转化成8进制数为:"; while(p->top != -1) //出栈 { Pop(p); } cout<<endl; system ("pause"); }