【第五周项目4】数制转换

来源:互联网 发布:软件结项文档 编辑:程序博客网 时间:2024/05/20 00:12
/*Copyright (c)2017,烟台大学计算机与控制工程学院        All rights reserved.        文件名称:17.cpp        作    者:尚文哲       完成日期:2017年10月12日                    问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。  输入描述:数字与进制  程序输出:输出转换结果  */

//(1)头文件:    #include<stdio.h>    #include<malloc.h>    typedef char ElemType;    typedef struct linknode    {        ElemType data;              //数据域        struct linknode *next;      //指针域    } LiStack;                      //链栈类型定义            void InitStack(LiStack *&s);  //初始化栈    void DestroyStack(LiStack *&s);  //销毁栈    int StackLength(LiStack *s);  //返回栈长度    bool StackEmpty(LiStack *s);  //判断栈是否为空    void Push(LiStack *&s,ElemType e);  //入栈    bool Pop(LiStack *&s,ElemType &e);  //出栈    bool GetTop(LiStack *s,ElemType &e);  //取栈顶元素    void DispStack(LiStack *s);  //输出栈中元素        //(2)源文件:        #include"head.h"    void InitStack(LiStack *&s)    {        s=(LiStack *)malloc(sizeof(LiStack));        s->next=NULL;    }            void DestroyStack(LiStack *&s)    {        free(s);    }    int StackLength(LiStack *s)    {        int i=0;        s=s->next;        while(s!=NULL)        {            i++;            s=s->next;        }        return i;    }    bool StackEmpty(LiStack *s)    {        if(s->next==NULL)        {            return true;        }        else return false;    }    void Push(LiStack *&s,ElemType e)    {        LiStack *l;        l=(LiStack *)malloc(sizeof(LiStack));        l->data=e;        l->next=s->next;        s->next=l;    }    bool Pop(LiStack *&s,ElemType &e)    {        LiStack *l;        l=s;        if(l->next==NULL)        {            return false;        }        l=s->next;        e=l->data;        s->next=l->next;        free(l);        return true;    }    bool GetTop(LiStack *s,ElemType &e)    {        if(s->next==NULL)        {            return false;        }        e=s->next->data;        return true;    }    void DispStack(LiStack *s)    {        LiStack *l;        l=s;        l=l->next;        while(l!=NULL)        {            printf("%c",l->data);            l=l->next;        }        printf("\n");            }      //(3)main函数:    #include "sqstack.h"            void MultiBaseOutput (int number,int base)    {        //假设number是非负的十进制整数,输出等值的base进制数        int i;        SqStack *S;        InitStack(S);        while(number)   //从右向左产生base进制的各位数字,并将其进栈        {            Push(S,number%base); //将将余数进栈            number/=base;        }        while(!StackEmpty(S))   //栈非空时退栈输出        {            Pop(S, i);            printf("%d",i);        }    }    int main()    {        MultiBaseOutput(16, 16);        return 0;    }    


数字15转2进制