东软数据结构实验报告通过栈和队列来实现进制转换
- 格式:doc
- 大小:245.07 KB
- 文档页数:14
实验报告(一)
实验过程
一、项目简介
进制转换
通过编写函数实现十进制浮点数到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 型