进制的转换
#include<iostream.h>
#define stacksize 100//存储空间初始分配量为100
struct stack //顺序栈
{
int data[stacksize];//创建一个int型数组data,大小为stacksize
int top;//定义整数栈顶
};
stack st;//定义一个名为"st"的栈
void initstack(stack *s) //初始化栈
{
s->top=-1;
}
int stackempty(stack *s)
{
return (s->top==-1);
}
int stackfull(stack *s) //判栈满
{
return (s->top==stacksize-1);
}
void push(stack *s,int x) //入栈
{
if (stackfull(s))
cout<<"栈满,入栈失败!"<<endl;
++s->top;
s->data[s->top]=x;
}
int pop(stack *s) //退栈
{
int x;
if(stackempty(s))
cout<<"栈空,退栈失败!"<<endl;
x=s->data[s->top];
s->top--;
return(x);
}
void conversion(int i)
{
stack *s;
s=&st;
int n,e;
initstack(s);
cout<<"请输入原数据:"<<ends;
cin>>n;
cout<<n<<"转化为"<<i<<"进制为:";
while(n)
{
push(s,n%i);
n=n/i;
}
while(!stackempty(s))
{
e=pop(s);
switch(e)
{
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;
default : cout<<e;
}
}
}
main()
{
cout<<"本程序可以将十进制度转化为N进制!"<<endl;
cout<<"请输入想转化为的进制:"<<ends;
int i;
cin>>i;
conversion(i);
cin>>i;
参考GPT和自己的思路:
这段程序是一个将十进制数转化为指定进制数的算法实现。程序使用了一个栈来存储计算过程中得到的余数,然后根据余数的大小输出相应的数字或字母(用于表示超过10的数字,如A、B、C等)。具体操作流程如下:
输入要转换的进制数 i;
输入一个十进制数 n;
不断执行以下操作:将 n 对 i 取余,将余数压入栈中,将 n 除以 i,直到 n 等于0;
弹出栈中的元素,根据其大小输出相应数字或字母,直到栈为空。
如果你有任何不理解的地方可以继续提问哦~