3-2 数制转换计算器
2021/5/30 18:51:34
本文主要是介绍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); } }
这篇关于3-2 数制转换计算器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南