赞
踩
一.上机实验的问题和要求:
二.程序设计的基本思想,原理和算法描述:
算法描述://十进制转换成其他进制
void coversion ()
{
int N,e,d;//十进制N转换成d进制数
InitStack(&S);//构造空栈
scanf(“%d”,&N);
while(N)
{
e=N%d;
Push(S,e);
N=N/d;
}
whlie(!StackEmpty(S))
{
Pop(S,e);
printf(“%d”,e);
}
}
三、调试和运行程序过程中产生的问题及采取的措施:
调试程序时未发现错误
四、源程序及注释
程序名:sz.cpp
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define STACK_INNT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配增量
typedef struct
{
int * base;//构造前或者销毁后,base=NULL.
int * top;//栈顶指针
int stacksize;
}SqStack;
//构造空栈
void InitStack(SqStack &S)
{
S.base=(int *)malloc(STACK_INNT_SIZE * sizeof(int));
if(!S.base)
{
printf("malloc failed.\n");
exit(0);
}
S.top=S.base;
S.stacksize=STACK_INNT_SIZE;
}
void Push(SqStack &S,int e)//进栈
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int *)realloc(S.base,(S.stacksize + STACKINCREMENT)*sizeof(int));
if(!S.base)
{
printf("malloc failed.\n");
exit(0);
}
S.top=S.base + S.stacksize;
S.stacksize +=STACKINCREMENT;
}
*S.top++=e;
}
void Pop(SqStack &S,int &e)//出栈
{
if(S.top==S.base)
{
printf("Stack Empty!\n");
exit(0);
}
e=*--S.top;
}
void main()
{
int N,e,m;
SqStack S;
InitStack(S);
printf("转换成几进制:\n");
scanf("%d",&m);
printf("输入十进制:\n");
scanf("%d",&N);
while(N)
{
e=N%m;
Push(S,e);
N=N/m;
}
while(S.top != S.base)
{
Pop(S,e);
printf("%d",e);
}
printf("\n");
}
五、运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。