7-1-3 数据结构实验一 进制转换

7-1-3 数据结构实验一 进制转换

利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制整数x和要转换的进制m,编程将x以m进制形式输出。

顺序栈的类型定义:

#define MAXSIZE 100   // MAXSIZE为最大数据元素数目
typedef struct
{   int  *base;
    int  *top;
}SqStack;

输入格式:

第一行输入一个十进制整数x。

第二行输入一个整数m(2、8或16), 代表要转换成m进制。

输出格式:

输出转换后的进制数。

输入样例:

15
2

输出样例:

1111

输入样例:

27
16

输出样例:

1B

 #include
#include
#define MAXSIZE 100
typedef struct
{   int  *base;
    int  *top;
}SqStack;
int Initstack(SqStack *S)
{
    S->base=(int *)malloc(MAXSIZE * sizeof(int));
    if(!S->base)
        return 0;
    S->top=S->base;
    return 1;
}
int Push(SqStack *S,int e)
{
    if(S->top-S->base==MAXSIZE)
        return 0;
    *(S->top++)=e;
    return 1;
}
int Pop(SqStack *S,int *e)
{
    if(S->top==S->base)
        return 0;
    *e=*(--S->top);
    return 1;
}
int Convertbase(int x,int m,SqStack *S)
{
    int r;
    while(x>0)
    {
        r=x%m;
        Push(S,r);
        x=x/m;
    }
    int result;
    while(Pop(S,&result))
    {
        if(result<10)
            printf("%d",result);
        else
            printf("%c",'A'+(result-10));
    }
}
int main()
{
    SqStack S;
    int x,m;
    Initstack(&S);
    scanf("%d\n",&x);
    scanf("%d\n",&m);
    Convertbase(x,m,&S);
    free(S.base);
    return 0;
}

你可能感兴趣的:(算法,数据结构)