当前位置:文档之家› c语言实现数制转换

c语言实现数制转换

.数制转换。

编写程序,将十进制整数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<stdio.h>
#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;
}。

相关主题