合 肥 学 院 学 生 实 验 报 告 专业 计算机科学与技术 姓名 学号 实验日期 2010年 4月 13实验地点 成绩 实验题目 实验六 — 程序设计题 3 问题分析 本题用栈进行运算比较简单,因此需要定义判断栈是否为空,将数据入 栈,取栈顶元素,出栈元素。 概要设计 int 型数据 堆栈型指针 int 型数据用来存储数据,堆栈型指针用来指向下一个结构体; 然 后 设 计 建 栈 函 数 linkstack* set(, 同 时 还 要 有 数 据 入 栈 函 数 linkstack* push(linkstack *k,int a,出栈函数,判断栈是否为空函数 int empty(linkstack *k,取栈顶函数 int gettop(linkstack *k。
通过在主函数中调用对栈操作的这些函数,完成对数据进制的转换。 测试数据:将 9分别转换成 2-9等不同进制输出。 详细设计
linkstack* set(//建立空堆栈 { linkstack *l; //定义堆栈类指针 l=NULL;//将指针付为空值 返回栈 l ; }
linkstack* push(linkstack *k,int a//向堆 栈中插入数据 { linkstack *l; //建立栈指针
l=(linkstack*malloc(sizeof(linkstack ;/申请地址 l->data=a;向栈的数据域赋值 l 的指针域指向下一个结构体 k=l; 返回堆栈 k; } int empty(linkstack *k//判断堆栈是否为空 { if(k==NULL//如果堆栈为空 return 1;//返回 1 else//否则 return 0;//返回 0 } int gettop(linkstack *k//取栈顶元素 { return k->data;//返回栈顶元素
} 详细设计 … … … …
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … void main(//主函数
{ linkstack *m;//定义堆栈指针 int a,b,c;//定义整型变量 m=set(;调用建栈函数建栈 printf(\"\\t请 输 入 要 转 换 的 数 字 :\\n\\t\"; scanf(\"%d\",&a;输入要转换的数 printf(\"\\t请输入要转换成多少进制 (范 围 2-9:\\n\\t\"; scanf(\"%d\",&c; while(a如果 a 不为 0 { b=a%c;//求余
m=push(m,b; a=a/c;
} printf(\"\\t该数的 %d进制表示为:\",c; while(!empty(m//如果不为空 { printf(\"%d \",gettop(m;//输出栈 顶元素
m=pop(m;//栈顶元素出栈 }
printf(\"\\n\\t\"; } 指导教师:日期:年 月 日 合 肥 学 院 学 生 实 验 报 告
函数的返回的类型与接收函数值的变量类型不对,不能正常编译。 程序结果如下图所示:
该软件按为在 dos 下运行的软件,第一步提示用户输入要转换的数据; 输入数据后,会提示输入要转换成多少进制的数;然后就会输出结果 。
教师签字: 日期: 年 月 日
测试结果 调试分析 操作说明
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … …