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 数制转换计算器相关推荐
- 小数点用计算机怎么用,用Windows计算器进行小数数制转换的方法
用Win7和Win8的计算器实现小数数制转换的方法 北京师范大学珠海分校林昌华 微软Windows XP.Win7和Win8操作系统附件中的计算器只能进行整数之间的数制转换,不能进行小数之间的数制转换 ...
- 01: 网络参考模型 、 数据封装与传输 、 数制与数制转换 、 IP地址与子网掩码
1.OSI模型 世界上第一台计算机 1946年2月14日 美国 ENIAC 世界上第一个计算机网络 1969年 APNET IBM,HP,DEC 不同计算机网络使用的标准不一样 想让全世界的所有网络都 ...
- 如何利用计算机进行数制转换,如何教授计算机基础中的数制转换内容
摘 要: 作者从在计算机基础教学中有关数制转换中学生作业中发现的问题入手,加以分析和有效解决,不仅保证教学效果,而且进一步提高教学质量. 关键词: 计算机基础教学 Windows计算器 数制转换法 在 ...
- 使用Android Studio做一个简易进制转换计算器
Android Studio简易进制转换计算器 1.问题描述. 设计并实现一个数制转换器,能够对输入的任- -进制类型的数值转换为指定的数制类型的数值.必须实现的数制类型有二进制.八进制.十进制和十六 ...
- java使用链栈实现数制转换
java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...
- 栈和队列应用之数制转换
数制转换是将任意一个非负的十进制数转换为其他进制的数,一般的方法是采用辗转相除法.参考<C#数据结构> N N/8 N%8 5142 642 ...
- 认识学习网络布线与数制转换
认识学习网络布线与数制转换 1.信号与传输介质 1.1.什么是信号? 1.2.信号在传输过程中产生的失真 1.3.数字信号的优势 1.4.双绞线 1.5.光纤 1.6.无线电波 1.7.微波 1.8. ...
- 常用的整数间的数制转换
常用的整数间的数制转换 前言 一.基本概念 1.数制: 2.数位: 3.基数: 4.位权: 二.转换 1.十进制转换二进制 2.二进制转换十进制 3.二进制转换其它进制 总结 前言 虽然计算机能极快地 ...
- C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...
c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...
最新文章
- __block的初步用法
- 阿里云盾技术强在哪里?轻松防御DDoS、CC攻击
- chrome浏览器 控制台创建 js脚本 并执行
- python【蓝桥杯vip练习题库】ADV-281特等奖学金
- WinCE系统字体的设置
- java md5 算法实现_Java 实现Md5算法
- respondsToSelector的相关使用
- nginx配置lua脚本
- 语音识别竞品分析报告
- FineReport 参数查询
- excel f2键功能_您的功能键在Microsoft Excel中做什么
- Python绘图实例33:太极图绘制
- 在Outlook中如何实现自动密送
- 判断质数和合数的java_质数与合数知识点总结(质数和合数的知识点)
- 【CANN训练营第三季】【进阶班笔记3】PyTorch安装与环境配置
- Java开发项目常见BUG
- 苹果ppt_如何选择一款趁手的PPT软件 | 一千零一夜PPT系列
- 分享2款设备管理系统源码:Springboot医院设备管理+物联网云监控IOT设备管理
- 海蜘蛛系统日志怎么保存到服务器,海蜘蛛软路由网络设置的操作步骤
- 飞行器系统市场现状及未来发展趋势