c语言实现数制转换

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

.数制转换。

编写程序,将十进制整数N转换为d进制数,其转换步骤是重复以下两步,直到N等于0。

X=N mod d (其中mod为求余运算)

N=N div d (其中div为整除运算)

测试数据:以十进制到二进制转换为例

输出结果为:(789)10→(1100010101)2

注意:要求使用栈的基本运算(包括InitStack(S),Pop(S),Push(S),IsEmpty(S)。应引用栈的头文件实现)。

#include

#define StackSize 50

typedef struct

{

int elem[StackSize];

int top;

}SeqStactk;

void InitStack(SeqStactk *S)

{

S->top=-1;

}

int IsEmpty(SeqStactk *S) /*判断栈空运算*/

{

if (S->top==-1) /*栈空*/

return 1;

else /*栈不空*/

return 0;

}

void Push(SeqStactk *S,int *a)

{

//将a置入S中栈顶

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

return;

else{

S->top++;

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

}

}

//出栈

int Pop(SeqStactk *S,int *b)

{

//将s栈顶元素弹出,放到b所指向空间

if (S->top==-1)

return -1;

else {

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

S->top--;

return *b;

}

}

int main(void)

{

SeqStactk S;

int x,d,a,b;

InitStack(&S);

printf("栈%s\n",(IsEmpty(&S)==1?"空":"不空"));

printf("输入十进制数x:");

scanf("%d",&x);

printf("输入想求几进制d:");

scanf("%d",&d);

while(x!=0)

{

a=x%d;

Push(&S,&a);

x=x/d;

}

printf("输出%d进制数:",d);

while(Pop(&S,&b)!=-1)

{

printf("%d",b);

}

printf("\n");

return 0;

}

相关文档
最新文档