欢迎来到天天文库
浏览记录
ID:12722334
大小:54.00 KB
页数:24页
时间:2018-07-18
《【最新精选】利用栈求表达式的值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、题目:利用栈求表达式的值一:设计目的利用栈求表达式的值,可供小学生使用,并能给出分数,并且可以给出评价。二:设计要求建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括号的混合运算;随时可以退出;保留历史分数能回顾历史,给出与历史的分数的比较后的评价。三:设计思想首先建立三个文件,分别为shitiku.txt,markrec.txt,n_rec.txt。其中shitiku.txt中存放试题;markrec.txt存放历史分数;n_rec.txt存放总共测试次数。1.创建试题库模块:首先在主函
2、数中调用创建试题库函数,将试题存入到试题库文件shitiku.txt中,然后将该调用从主函数中删除。创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。2.试题测试模块:试题计算:建立两个栈,分别存放数字、运算符,建立一个二维数组,存放任意两个运算符之间的优先级关系,通过比较符号栈中后两个运算符的优先级关系,决定数字栈中后两个数据是直接入栈还是运算之后入栈,最后在数字栈中得到最后的运算结果
3、。通过比较用户输入的结果与程序计算的结果来决定测试者的分数mark是否加分,测试完成时,将分数mark写入记录分数文件markrec.txt中,并将总共的测试次3.查看历史分数模块:通过查看n_rec.txt中总共的测试次数n,得到markrec.txt中n个历史分数,将结果显示个用户。4.随时退出模块:测试完或将查看历史分数后,按任意键将返回到菜单,菜单中输入0即可退出。数记录如n_rec.txt中。四:设计程序#include#include#inclu
4、de#include#include#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#defineERROR0#defineOK1//定义表达式typedefstructshiti{chara[20];longresult;}xuanti;typedefstructSqStack1{//建立数字栈int*base;int*top;intstacksize;}SqStack1;typedefstr
5、uctSqStack2{//建立运算符栈char*base;char*top;intstacksize;}SqStack2;voidWriteToFile(xuanti*pstu,intnum);voidReadFromFile(xuanti*pstu,intnum);voidpage_title(char*menu_item){//建立菜单printf(">>>数学习题库<<<-%s-",menu_item);}voidreturn_confirm(){printf("按任
6、意键返回……");getch();}voidIntInitStack(SqStack1*S1){S1->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!S1->base)exit(ERROR);S1->top=S1->base;S1->stacksize=STACK_INIT_SIZE;}//IntInitStackvoidCharInitStack(SqStack2*S2){S2->base=(char*)malloc(STACK_IN
7、IT_SIZE*sizeof(char));if(!S2->base)exit(ERROR);S2->top=S2->base;S2->stacksize=STACK_INIT_SIZE;}//CharInitStacklongIntGetTop(SqStack1*S1){//取栈顶元素longe1;if((*S1).top==(*S1).base)return0;e1=*((*S1).top-1);returne1;}//IntGetTopcharCharGetTop(SqStack2*S2)
8、{//取栈顶元素chare2;if((*S2).top==(*S2).base)return0;e2=*((*S2).top-1);returne2;}//IntGetTopintIntPush(SqStack1*S1,inte1){//入栈*(*S1).top++=e1;returnOK;}//IntPushintCharPush(SqStack2*S2,chare2){//入栈*(*S2).top++=e2;returnOK;}//CharPushintIntPop(SqStack1*S1)
此文档下载收益归作者所有