任意进制转换(数据结构c语言版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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");
}