数制转换(栈应用)实验报告

实验报告

1.实验题目

运用栈进行数制转换。

2.需求分析

用C 编写完成:对于输入的任意一个非负十进制整数,输出与其等值的其他进制数。

3.概要设计

由于运行过程是从低位到高位顺序产生进制数的各个数位,而输出应从高位到底位进行,这和计算过程相反,恰好可以运用栈把进制数的各位顺序入栈,而按出栈序列输出,即为对应转换的进制数。

4.详细设计

1) 先对栈定义:

Typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}Stack;

2) 构造一个栈:

int InitStack(Stack &S)//初始化栈

{

S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base) exit (ERROR); //存储分配失败

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return OK;

}

3) 分别进行入栈和出栈操作,再进行进制转换。

5.调试分析

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OK 1

#define ERROR 0

//栈定义

typedef struct

{

int *base; int *top; int stacksize;

}Stack;

int InitStack(Stack &S)//初始化栈

{

}

int push(Stack &S,int e)//入栈

{

if(S.top-S.base>=S.stacksize) //栈满 S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); if(!S.base) exit (ERROR); //存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;

} } *S.top++=e; return 1; S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)* sizeof(int)); if(!S.base) exit (ERROR); //存储分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;

int pop(Stack &S,int &e)//出栈

{

}

void conversion(int n,int m)//n为十进制数,m 为要转换进制 {

Stack S; InitStack(S); while(n!=0) { } push(S,n%m); n=n/m; if(S.top==S.base) return ERROR;//栈空 e=* --S.top; return OK;

} { } int x; pop(S,x); printf("%x",x);

int main() {

} int n,m; printf("请输入一个十进制正整数:"); scanf("%d",&n); printf("\n输入要转换进制:"); scanf("%d",&m); if(m

实验报告

1.实验题目

运用栈进行数制转换。

2.需求分析

用C 编写完成:对于输入的任意一个非负十进制整数,输出与其等值的其他进制数。

3.概要设计

由于运行过程是从低位到高位顺序产生进制数的各个数位,而输出应从高位到底位进行,这和计算过程相反,恰好可以运用栈把进制数的各位顺序入栈,而按出栈序列输出,即为对应转换的进制数。

4.详细设计

1) 先对栈定义:

Typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}Stack;

2) 构造一个栈:

int InitStack(Stack &S)//初始化栈

{

S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!S.base) exit (ERROR); //存储分配失败

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return OK;

}

3) 分别进行入栈和出栈操作,再进行进制转换。

5.调试分析

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OK 1

#define ERROR 0

//栈定义

typedef struct

{

int *base; int *top; int stacksize;

}Stack;

int InitStack(Stack &S)//初始化栈

{

}

int push(Stack &S,int e)//入栈

{

if(S.top-S.base>=S.stacksize) //栈满 S.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); if(!S.base) exit (ERROR); //存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK;

} } *S.top++=e; return 1; S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)* sizeof(int)); if(!S.base) exit (ERROR); //存储分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT;

int pop(Stack &S,int &e)//出栈

{

}

void conversion(int n,int m)//n为十进制数,m 为要转换进制 {

Stack S; InitStack(S); while(n!=0) { } push(S,n%m); n=n/m; if(S.top==S.base) return ERROR;//栈空 e=* --S.top; return OK;

} { } int x; pop(S,x); printf("%x",x);

int main() {

} int n,m; printf("请输入一个十进制正整数:"); scanf("%d",&n); printf("\n输入要转换进制:"); scanf("%d",&m); if(m


相关内容

  • 实验报告心得体会
  • 高校实验室是培养高层次人才和开展科学研究的重要基地。在西方发达国家,学校对培养学生的动手能力是十分重视的,这一问题近年来也越来越受到我国教育界人士的广泛重视。为了提高学生的动手能力,让学生做相关实训并完成单片机实验报告,在实验的形式上注重培养学生的实验技能和动手能力。从单片机实验心得中学生就可以总结 ...

  • 巨磁阻效应实验报告
  • 基础物理实验研究性实验报告 巨磁电阻效应及其应用 目录 摘要 ....................................................................................................................... ...

  • 微控制器技术及应用
  • 微控制器技术及应用实验指导书 沈阳航空航天大学自动化学院 实验要求 1. 每位学生必须按规定完成实验课,因故不能参加实验者,应课前向指导教师请假.对所 缺实验要求在指导教师规定时间内补齐,缺实验者期末考试成绩为不及格. 2. 每次实验课前,必须做到预习,弄清实验题目.目的.内容.步骤和操作过程等.写 ...

  • 实验四时序逻辑电路的应用研究实验报告1
  • 实验四 时序逻辑电路的应用研究 实验报告 一.实验目的 1. 熟悉常见时序逻辑芯片的逻辑功能. 2.掌握时序组合逻辑芯片的使用方法. 3.学习时序逻辑电路的设计与调试方法. 二.实验内容和步骤 2.静态测试 3.以一片CD4027为核心,辅以少量逻辑门,设计一个时序逻辑电路(3进制计数器),使其按如 ...

  • 微控制器实验报告(xp)
  • 微控制器实验报告 学 院: 信息科学与工程学院 专业班级: 自动化0801 姓 名: 学 号: 指导老师: 李志民老师 目录 第一章 实验概述............................................................................... ...

  • 东北大学传感器实验报告
  • 实验一 金属箔式应变片――单臂电桥性能实验 一.实验目的:了解金属箔式应变片的应变效应,单臂电桥工作原理和性能. 二.基本原理:电阻丝在外力作用下发生机械变形时,其电阻值发生变化,这就是电阻应变效应, 描述电阻应变效应的关系式为: ΔR /R =K ε 式中:ΔR /R 为电阻丝电阻相对变化,K 为 ...

  • 基于计算机控制技术的光控灯实验报告
  • 计算机控制技术课程设计报告 --路灯自动开关的设计 课程名称: 计算机控制基础 姓 名: 学 号 班 级: 指导老师: 储 忠 目 录 概 述............................................................ 3 关键词:............ ...

  • 峰值检测系统的设计
  • 峰值检测系统的设计 文⊙ 宫玉芳(兰州交通大学电子与信息工程学院 甘肃兰州) 摘要:本文介绍了峰值检测系统的设 计原理.设计方法及其性能指标调试方法.将被测信号经传感器变为电信号,再 经放大器741放大.LF398采样/保持后进行A/D转换和信号处理后显示输出. 关键词:峰值检测:采样/保持:A/D ...

  • 传感器实验报告--光纤位移传感器的动态测量
  • 北京XX大学 实验报告 课程(项目)名称:实验五 光纤传感器动态测量 学 院: 自动化 专 业: 班 级: 学 号: 姓 名: 成 绩: 2013年12月10日 光纤位移传感器的动态测量一 一.任务与目的 了解光纤位移传感器的动态应用. 二.原理(条件) 光电传感器是一种广泛应用的传感器,它把输入的 ...