资源简介
文件内容(利用栈求表达式的值任务书,说明书,源代码)。
软件环境:TC。
实现功能:建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;利用栈求解表达式的值;随时可以退出。
在C环境中都能实现。
代码片段和文件信息
#include
#include
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 0
#define ERROR 1
char Table[8][8]={ ‘ ‘‘+‘‘-‘‘*‘ ‘/‘ ‘(‘‘)‘‘#‘ /*运算符优先级表格*/
‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘ ‘
‘)‘‘>‘‘>‘‘>‘‘>‘‘ ‘‘>‘‘>‘
‘#‘‘<‘‘<‘‘<‘‘<‘‘<‘‘ ‘‘=‘
};
char ptr[10]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘=‘} ; /*运算符*/
typedef struct shiti /*定义表达式*/
{
char a[20]; /*存放表达式*/
long result; /*存放用户输入的答案*/
}xuanti;
typedef struct SqStack1 /*建立数字栈*/
{
int *base;
int *top;
int stacksize;
}SqStack1;
typedef struct SqStack2 /*建立运算符栈*/
{
char *base;
char *top;
int stacksize;
}SqStack2;
void WriteToFile(xuanti *pstuint num);
void ReadFromFile(xuanti *pstuint num);
void page_title() /*建立菜单*/
{
printf(“>>> Math excercises liberary <<<\n\n“);
printf(“ --Operation Menu--\n“);
printf(“1 Start the test\n“);
printf(“2 History of the scores\n“);
printf(“0 exit\n“);
printf(“******************\n“);
}
void return_confirm() /*按任意键返回菜单*/
{
printf(“Press any key to return !\n“);
getch();
}
void IntInitStack(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;
}
void CharInitStack(SqStack2 *S2) /*运算符栈初始化*/
{
S2->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S2->base)
exit(ERROR);
S2->top=S2->base;
S2->stacksize=STACK_INIT_SIZE;
}
long IntGetTop(SqStack1 *S1) /*取数字栈栈顶元素*/
{
long e1;
if((*S1).top==(*S1).base)
return 0;
e1=*((*S1).top-1);
return e1;
}
char CharGetTop(SqStack2 *S2) /*取运算符栈栈顶元素*/
{
char e2;
if((*S2).top==(*S2).base)
return 0;
e2=*((*S2).top-1);
return e2;
}
int IntPush(SqStack1 *S1int e1) /*入栈*/
{
*(*S1).top++=e1;
return OK;
}
int CharPush(SqStack2 *S2char e2) /*入栈*/
{
*(*S2).top++=e2;
return OK;
}
int IntPop(SqStack1 *S1) /*出栈*/
{
int e1;
if((*S1).top==(*S1).base)
return 0;
e1=*--(*S1).top;
return e1;
}
char CharPop(SqStack2 *S2) /*出栈*/
{
char e2;
if((*S2).top==(*S2).base)
return 0;
e2=*--(*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 80384 2009-06-26 07:47 罗文凤(利用栈求表达式的值)\利用栈求表达式的值源代码.doc
文件 112128 2009-06-26 00:53 罗文凤(利用栈求表达式的值)\利用栈求表达式的值说明书.doc
文件 76800 2009-06-15 13:38 罗文凤(利用栈求表达式的值)\利用栈求解表达式的值任务书.doc
文件 7 2009-06-23 21:39 罗文凤(利用栈求表达式的值)\源代码\MARKREC.txt
文件 2 2009-06-23 21:39 罗文凤(利用栈求表达式的值)\源代码\N_REC.txt
文件 480 2009-06-22 09:51 罗文凤(利用栈求表达式的值)\源代码\SHITIKU.txt
文件 12926 2009-06-25 20:55 罗文凤(利用栈求表达式的值)\源代码\Stack.c
目录 0 2009-07-15 17:11 罗文凤(利用栈求表达式的值)\源代码
目录 0 2009-07-15 17:11 罗文凤(利用栈求表达式的值)
----------- --------- ---------- ----- ----
282727 9
- 上一篇:GPS词汇及缩写-gps专业资料
- 下一篇:微机课程设计 竞赛抢答器四路
评论
共有 条评论