要求实现函数,借助如下自定义栈seqstack将一个正整数n转换为$$进制数并输出。输出时用大写字母A、B、C、D、E、F分别表示10、11、12、13、14、15。
#include <iostream>
#define MAXSIZE 100
using namespace std;
typedef struct
{
int data[MAXSIZE];
int top;
}seqstack;
void initstack(seqstack &s)
{
s.top=-1;
}
int push(seqstack &s,int x)
{
if(s.top==MAXSIZE-1)
{
cout<<"the stack is full!"<<endl;
return 0;
}
s.top++;
s.data[s.top]=x;
return 1;
}
int pop(seqstack &s,int &e)
{
if(s.top==-1)
{
cout<<"the stack is empty!"<<endl;
return 0;
}
e=s.data[s.top];
s.top--;
return 1;
}
int isempty(seqstack s)
{
if (s.top==-1)
return 1;
else return 0;
}
void conversion(int N,int d)//利用自定义栈进行进制转换
{
seqstack s;
s.data[MAXSIZE];
initstack(s);
int e=N;
while(e>=d)
{
int t=e%d;
push(s,t);
e=e/d;
}
push(s,e);
while(!isempty(s))
{
pop(s,e);
if(d==16)
{
if(e>=10)cout<<char('A'+e-10);
else cout<<e;
}
else cout<<e;
}
}
int main()
{
int n,k;
cin>>n>>k;
conversion(n,k);
return 0;
}
标签:seqstack,转换,进制,int,top,MAXSIZE,push,数据结构,cout
From: https://blog.csdn.net/Asteroid_PZX/article/details/143083030