任意进制转换(队列实现存储和输出)

#include <stdio.h>
#include <stdlib.h>
#define maxsize 1000000
**//定义队列**
typedef struct
{
    char c[maxsize];
    int top;
}seqstack;

**//判断队列是否为空**
int empty_seqstack(seqstack *s)
{
    if(s->top==-1)
        return 1;
    else
        return 0;
}
**//入队**
void push_seqstack(seqstack *s,char x)
{

    if(s->top==maxsize-1)
        printf("stack is full\n");
    else
    {

        s->top++;
        s->c[s->top]=x;
    }
}
**//出队**
void pop_seqstack(seqstack*s)
{
    char x;
    while(s->top!=-1)
    {
        x=s->c[s->top];
        printf("%c",x);
        s->top--;
    }


}
**///进制转换(以字符形式存储为核心)**
void conversion(int a,int r,seqstack *s)
{
    char x;
    while(a!=0)
    {
        if(a%r<=9)
        {
            x=a%r+'0';
            push_seqstack(s,x);
        }
        else
        {
            x=a%r+'A'-10;
            push_seqstack(s,x);
        }
        a=a/r;
    }


}
**//主程序**
int main()
{
    int a,r;
    seqstack *s;
    s=(seqstack*)malloc(sizeof(seqstack));
    s->top=-1;
    printf("请输入要转换的数和进制\n");
    scanf("%d %d",&a,&r);

    conversion(a,r,s);
    pop_seqstack(s);




    return 0;
}

猜你喜欢

转载自blog.csdn.net/cruel2436/article/details/83018596