栈的应用

  • 格式:doc
  • 大小:816.00 KB
  • 文档页数:4

数据结构课程实验报告
一、实验目的
深入了解栈的特性,并能在实际问题背景下灵活运用。

二、实验内容与实验步骤
问题描述:
对于输入任意一个非负十进制整数,打印输出与其等值的B进制数,B的值可以为2,8,16。

基本要求:
用栈实现将一个非负十进制整数转换为与之对应的B进制数。

以菜单的形式进行调用实现
测试数据:
分别设定B的值为2、8和16,输出将十进制数59分别转换的结果。

提示:
建立一个子函数对任意进制进行转换,在主函数中用菜单方式完成各种进制的选择。

三、附录:
在此贴上调试好的程序。

#include<stdio.h>
#include<malloc.h>
typedef struct
{ int data[100];
int top;
}Seqstact;
Seqstact *initstact()
{ Seqstact *s;
s=(Seqstact*)malloc(sizeof(Seqstact));
if(!s)
{ printf("空间不足!");
return NULL;
}
else
{ s->top=0;
return s;
}
}
void fun(int n,int d)
{
Seqstact *s=initstact();
while(n!=0)
{ if(d!=2&&d!=8)
{ s->top++;
if(n%d>=0&&n%d<=9)
s->data[s->top]=n%d;
else s->data[s->top]=55+n%d;
n=n/d;
}
else
{ s->top++;
s->data[s->top]=n%d;
n=n/d;
}
}
printf("转换后的数是:");
while(s->top!=0)
{
if(s->data[s->top]>=10)
printf("%c",s->data[s->top]);
else printf("%d",s->data[s->top]);
s->top--;
}
printf("\n");
}
void main()
{ int n,i,k;
printf("请输入十进制数n,并将其转换成你所想要的进制数:\n");
printf("n=");
scanf("%d",&n);
printf("\n");
do
{ printf("**********************\n");
printf("******1--二进制*******\n");
printf("******2--八进制*******\n");
printf("******3--十六进制*****\n");
printf("******4--其他进制*****\n");
printf("******5--退出*********\n");
printf("**********************\n");
scanf("%d",&i);
switch(i)
{ case 1: fun(n,2);break;
case 2: fun(n,8);break;
case 3: fun(n,16);break;
case 4: printf("请输入其他进制:");scanf("%d",&k); fun(n,k);break;
}
}while(i<5);
}
四、运行结果:
在此把运行结果从屏幕上拷下来贴在此
五、心得体会:。