1、 计科0902 指导老师: 章老师分 数:利用栈求表达式值一:设计目的利用栈求表达式的值,可供小学生使用,并能给出分数,并且可以给出评价。二:设计要求建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括号的混合运算;随时可以退出;保留历史分数能回顾历史,给出与历史的分数的比较后的评价。三:设计思想首先建立三个文件,分别为shitiku.txt,markrec.txt,n_rec.txt。其中shitiku.txt中存放试题;markrec.txt存放历史分数;n_rec.txt存放总共测试次数。1.创建试题库模块:首先在主函数中调用创建试题库函数,将试题存入到试题库文件shitiku.tx
2、t中,然后将该调用从主函数中删除。创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。2.试题测试模块: 试题计算:建立两个栈,分别存放数字、运算符,建立一个二维数组,存放任意两个运算符之间的优先级关系,通过比较符号栈中后两个运算符的优先级关系,决定数字栈中后两个数据是直接入栈还是运算之后入栈,最后在数字栈中得到最后的运算结果。 通过比较用户输入的结果与程序计算的结果来决定测试者的分数mark是否加分,测试完成时,将分数mark写入记录分数文件markrec.txt中,并将总共的测试次数
3、记录如n_rec.txt中。3.查看历史分数模块: 通过查看n_rec.txt中总共的测试次数n,得到markrec.txt中n个历史分数,将结果显示个用户。4.随时退出模块: 测试完或将查看历史分数后,按任意键将返回到菜单,菜单中输入0即可退出。四详细设计1.定义数字结构体和运算符结构体,实现栈操作typedef struct SqStack1 /建立数字栈 int *base; int *top; int stacksize;SqStack1; typedef struct SqStack2 /建立运算符栈 char *base; char *top;SqStack2;2.建立试题的存放结
4、构体typedef struct shiti /定义表达式 char a20; /*存放表达式*/ long result; /*存放用户输入的答案*/xuanti;3.主菜单main()函数void main() int m=0; int *RN; RN=(int *)malloc(1*sizeof(int); RN0=0; system(cls); LookN(RN,1); RN0+=m; fflush(stdin); while(1) page_title(); /输出菜单 m=0; switch(getch() case 1 : m=excersice_begin();/开始测试 br
5、eak;2 Look_Mark(RN0);/ 查看历史分数记录 case 3 Built_shitiKu();/增加试题 break;0 RecN(RN,1); exit(0); /退出 pause五 功能的实现程序运行的主结构图1.开始测试2.查询历史成绩 3.增加试题3.程序运行的结构图通过比较栈顶符号与数组a存放的字符,在table二维数组中,查询其运算符的优先级,分别进行运算符的出栈,进栈以及数字进栈,进行算法的实现。六 测试结果 1.开始菜单2.开始测试(输入-1直接退出并保存分数)3.查看历史分数记录4.增加试题到试题库七 结束术语 VC+运行软件上,通过利用栈求表达式的值,进行输入表达式并给出答案,保存分数进行评价,存储,增加试题到试题库中,显示历史分数,建立文件,实现程序的各项功能,对栈的应用有了进一步的了解,同时,对数据结构及其算法栈也有一定体会,对C+有了近一步的了解。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1