我觉得这是一个非常非常简单的程序,就...直接写在主函数里了
#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAX 20
typedef struct stack {
int* base;
int* top;
int len;
}stack;
int main(void)
{
cout << "请选择你要进行的进制抓换的类型:" << endl;
int a;
cin>>a;
// cout << "请输入你要把已经存在的函数类型转化成什么进制的数组" << endl;
cout<<"请输入一个数字让我们来转化它"<<endl;
int t;
cin>>t;
stack newstack;
newstack.base = (int*)malloc(100000 * sizeof(int));//我随意开辟的哈,因为我也不知道新创建的数到底能占几位
newstack.top = newstack.base;//注意哈,因为我们要干的事情是在计算机内存的某一段内存空间存放数值,
newstack.len=0;
while(t/a>=1)
{
*newstack.top=t%a;
t=t/a;
newstack.top++;
newstack.len++;
}
//记住记住哈我们要记得把最后小于一的内个最后的商余压入栈中,这个很重要,另外书上也是这样写的
*newstack.top=t;
newstack.top++;
newstack.len++;
newstack.top--;
cout<<"转换后的结果是:"<<endl;
for (int i = 0; i < newstack.len; i++)
{
cout << *newstack.top<< endl;
newstack.top--;
if(newstack.top==newstack.base)//这个点是我怕--后成为野指针了
{
cout << *newstack.top<< endl;//也就是说不让它参加下一个top--的循环了,top此时现在回到了base
break;
}
}
cout << "你这个栈的长度是:"<<newstack.len << endl;
}
|