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