东软数据结构实验报告通过栈和队列来实现进制转换

  • 格式:doc
  • 大小:245.07 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告(一)

实验过程

一、项目简介

进制转换

通过编写函数实现十进制浮点数到R进制的转换,在十进制浮点数的整数部分利用栈结构实现,小数部分用队列结构实现。

二、项目实施:

1.读取数据并获得小数点位置

2.将字符串转为整数形式

.

3.对整数部分进行入栈

4.获得小数部分并入队

5.整数和小数的联合输出

6.源代码:

#include

#include

#include

#define size 10 //小数部分大小

#define maxsize 20 //整数部分大小

//*********************************

//*********************************

//小数部分——队列

typedef struct

{

char data[10]; //读取转制后的小数部分int front,rear; //队首尾指针

}Queue; //循环队列

//*********************************

//初始化队列

void init_Queue(Queue* q)

{

q->front=q->rear=0;

}

//*********************************

//入队

int push_Queue(Queue *q,int x)

{

if((q->rear+1)%size==q->front) //判断队满{

printf("队列满!不允许入队\n");

return 0;

}

else

{

q->rear=(q->rear+1) % size;

q->data[q->rear]=x;

return 1;

}

}

//*********************************

//出队

int pop_Queue(Queue *q,int *x)

{

if(q->rear==q->front)

{

printf("队空!");

return 0;

}

else

{

q->front=(q->front+1)%size;

*x=q->data[q->front]; //读取队头元素

return 1;

}

}

//*********************************

//*********************************

//整数部分——栈

typedef struct

{

char dataint[100];

int top;

}Stack;

//*********************************

//-制空栈

void init_Stack(Stack *s)

{

s->top=0;

}

//*********************************

//进栈

int push_Stack(Stack *s,int x)

{

if(s->top==maxsize)

{

printf("栈已满!");

return 0;

}

else

{

s->dataint[s->top]=x; //数据进栈

s->top++;

return 1;

}

}

//*********************************

//出栈

int pop_Stack(Stack *s,int *x)

{

if(s->top==0)

{

printf("栈空,无数据可取!");

return 0;

}

else

{

s->top--;

*x=s->dataint[s->top]; //取处数据

return 1;

}

}

//********************************* 主程序

int main()

{

//*********************************

//读入数据

char a[20];

int aim;

printf("请输入一个十进制浮点数:"); //以字符串形式输入一个浮点数gets(a);

printf("请输入目标进制:");

scanf("%d",&aim);

if(aim==1) {

printf("ERROR! PLEASE INPUT A NUMBER AND IT IS BIGGER THAN 1");

return 0;

}

//*********************************

//读取小数点位置

int i;

int pos;//小数点位置

for(i=0;i

{

if(a[i]=='.')

{

pos=i;

break;

}

}

//*********************************

//定义栈对整数部分转化后并入栈

Stack ss;

init_Stack(&ss);//初始化栈

//*********************************

//将整数部分转换为int 型