3-2 数制转换计算器
作者:互联网
3-2 数制转换计算器 (100 分)
十进制数N和其他d进制数的转换是计算机实现计算的基本问题。通常我们可以使用短除法进行转换,基本原理为:(其中:div为整除运算,mod为求余运算)。短除法最先计算得出的余数为进制转换后的低位,最后计算得出的余数为进制转换后的高位,计算顺序和输出顺序相反,而栈具有后进先出的固有特性,致使栈成为程序设计中的有用工具我们。请使用栈的链式存储结构,设计一个程序,解决十进制转换成其他进制的问题。 数制转换计算器 (1)输入任意一个非负十进制整数n (2)打印输出与N等值的2进制数。
函数接口定义:
数据类型的定义:
#define TRUE 1
#define FALSE 0
#define Stack_Size 50
#define StackElementType int
/*顺序栈*/
typedef struct
{
StackElementType elem[Stack_Size]; /*用来存放栈中元素的一维数组*/
int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/
}SeqStack;
需要完成的接口:
void Conversion(int N); /*对于任意的一个非负十进制数N,打印出与其等值的二进制数*/
裁判测试程序样例:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define Stack_Size 50
#define StackElementType int
/*顺序栈*/
typedef struct
{
StackElementType elem[Stack_Size]; /*用来存放栈中元素的一维数组*/
int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/
}SeqStack;
/*初始化*/
void InitStack(SeqStack *S);
int IsEmpty(SeqStack *S); /*判断栈S为空栈时返回值为真,反之为假*/
/*判栈满*/
int IsFull(SeqStack *S);/*判断栈S为满栈时返回值为真,反之为假*/
int Push(SeqStack *S,StackElementType x);
int Pop(SeqStack *S,StackElementType *x);
/*取栈顶元素。*/
int GetTop(SeqStack *S,StackElementType *x);
void Conversion(int N); /*对于任意的一个非负十进制数N,打印出与其等值的二进制数*/
int main()
{
int n;
scanf("%d",&n);
Conversion(n);
return 0;
}
/*初始化*/
void InitStack(SeqStack *S)
{
/*构造一个空栈S*/
S->top = -1;
}
/*判栈空*/
int IsEmpty(SeqStack *S) /*判断栈S为空栈时返回值为真,反之为假*/
{
return(S->top==-1?TRUE:FALSE);
}
/*判栈满*/
int IsFull(SeqStack *S) /*判断栈S为满栈时返回值为真,反之为假*/
{
return(S->top==Stack_Size-1?TRUE:FALSE);
}
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)
{
/* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */
if(S->top == -1) /*栈为空*/
return(FALSE);
else
{
*x = S->elem[S->top];
S->top--; /* 修改栈顶指针 */
return(TRUE);
}
}
/*取栈顶元素。*/
int GetTop(SeqStack *S,StackElementType *x)
{
/* 将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 */
if(S->top == -1) /*栈为空*/
return(FALSE);
else
{
*x = S->elem[S->top];
return(TRUE);
}
}
/* 请在这里填写答案 */
void Conversion(int N) //十进制转换
{
}
输入样例:
在这里给出一组输入。例如:
20
输出样例:
在这里给出相应的输出。例如:
10100
接口实现:
void Conversion(int N) /*对于任意的一个非负十进制数N,打印出与其等值的二进制数*/
{ SeqStack S; StackElementType x; /*S为顺序栈或链栈*/
InitStack(&S);
while(N>0)
{
x=N%2;
Push(&S, x);
N=N/2;
}
while(!IsEmpty(&S))
{
Pop(&S,&x);
printf("%d",x);
}
}
标签:SeqStack,转换,int,top,return,StackElementType,计算器,数制,define 来源: https://blog.csdn.net/m0_54491109/article/details/117401606