設計一個十進位制轉化為隨意進位制的程式

程式碼女民工發表於2021-09-26

#include<stdio.h>

#include<stdlib.h>

#define SIZE 20

#define MORE 10

typedef struct{

int *base;

int top;

int stacksize;

}SqStack;


void InitStack(SqStack &S)//構造一個空棧

{

 

S.base=(int *)malloc(SIZE*sizeof(int));

if(!S.base) return ;

S.top=0;

S.stacksize=SIZE;

}

int StackEmpty(SqStack &S)//判空 是返回1 否返回0

{


if(S.top==0) return 1;

else return 0;

}

void Push(SqStack &S,int e)//入棧

{


if(S.top>=S.stacksize)

{

S.base=(int *)realloc(S.base,(S.stacksize+MORE)*sizeof(int));

if(!S.base) exit(0);

S.stacksize+=MORE;

}

S.base[S.top++]=e;

}

void Pop(SqStack &S,int &e)//出棧

{


if(S.top==0) exit(0);

else

e=S.base[--S.top];

}

void GetTop(SqStack &S,int &e)//取棧頂元素

{


if(S.top==0)  exit(0);

else

e=S.base[S.top-1];

}

void Res(SqStack &S,int n,int d)//將10進位制數n轉換為d進位制

{


InitStack(S);

while(n)

{

Push(S,n%d);

n=n/d;

}

}


int main()


{

    while (1)

    {

        int n, d, e;

        SqStack S;

        printf("******************************\n");

        printf("*    輸入要轉換的10進位制數:  *\n");

        printf("******************************\n");

        scanf("%d", &n);

        printf("******************************\n");

        printf("*      請輸入轉換進位制:      *\n");

        printf("******************************\n");

        printf("*  請選擇一個你要轉換的進位制  *\n");

        printf("*         2-任意進位制         *\n");

        printf("******************************\n");

        scanf("%d", &d);

        Res(S, n, d);

        printf("******************************\n");

        printf("*         輸出結果:         *\n");

        printf("******************************\n");

        while (!StackEmpty(S))

        {

            Pop(S, e);

            printf("%d", e);

        }

        printf("\n");

        printf("******************************\n");

        printf("******************************\n");

        system("pause");

        printf("******************************\n");

    }

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2793754/,如需轉載,請註明出處,否則將追究法律責任。

相關文章