任意进制转换(数据结构c语言版)

  • 格式:doc
  • 大小:16.50 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以下是在vc++6.0下运行的结果,我列举了输入345,进制分别为2,8,16的得出的结果,下面的不止只有这三个,输入任意进制的都可以

输入一个整数和进制数:345,2

转换成进制之后的数:101011001

Press any key to continue

输入一个整数和进制数:345,2

转换成进制之后的数:101011001

Press any key to continue

输入一个整数和进制数:345,16

转换成进制之后的数:159

Press any key to continue

程序如下:

#include

#include

#define TRUE 1

#define FALSE 0

#define Stack_Size 100

typedef int StackElementType;

typedef struct

{

StackElementType elem[Stack_Size];

int top;

}SeqStack;

void InitStack(SeqStack *S)

{

S->top=-1;

}

int Push(SeqStack *S,StackElementType x) {

if(S->top==Stack_Size-1)

return(FALSE);

S->top++;

S->elem[S->top]=x;

return(TRUE);

}

int Pop(SeqStack *S,StackElementType *x) {

if(S->top==-1)

return(FALSE);

else

{

*x=S->elem[S->top];

S->top--;

return(TRUE);

}

}

int GetTop(SeqStack *S,StackElementType *x) {

if(S->top==-1)

return(FALSE);

else

{

*x=S->elem[S->top];

return(TRUE);

}

}

void main()

{

int m,n,x;

char ch;

SeqStack S;

InitStack (&S);

printf("输入一个整数和进制数:");

scanf("%d,%d",&m,&n);

while(m)

{

Push(&S,m%n);

m=m/n;

}

printf("转换成进制之后的数:"); while(S.top!=-1)

{

if(S.elem[S.top]>9)

{char ch='A'+S.elem[S.top]-10;

printf("%c",ch);}

else

printf("%d",S.elem[S.top]);

Pop(&S,&x);

}

printf("\n");

}