• 大小: 330KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签:

资源简介

利用栈求表达式课程设计一:设计目的 利用栈求表达式的值,可供小学生使用,并能给出分数,并且可以给出评价。 二:设计要求 建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括号的混合运算;随时可以退出;保留历史分数能回顾历史,给出与历史的分数的比较后的评价。 三:设计思想 首先建立三个文件,分别为shitiku.txt,markrec.txt,n_rec.txt。其中shitiku.txt中存放试题;markrec.txt存放历史分数;n_rec.txt存放总共测试次数。

资源截图

代码片段和文件信息

 #include 
#include 
#include 
#include 
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 0
#define ERROR 1
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 page_title()          
{//建立菜单
    printf(“\t>>> 数学习题库<<<\n\n“);
    printf(“ \t --- 主菜单 ---\n\n“);
    printf(“\t1 开始测试\n“);
    printf(“\t2 查看历史分数记录\n“);
printf(“\t3 增加问题\n“);
    printf(“\t0 退出\n“);
    printf(“\t******************\n“);
}

void return_confirm()                        
{//按任意键返回菜单
     printf(“\n按任意键返回 !……\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(0);
    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);
    return e1;
}

char CharGetTop(SqStack2 *S2)            
{ //取运算符栈栈顶元素
    char e2;
    if((*S2).top==(*S2).base) 
        return 0;
    e2=*(--(*S2).top);
    return e2;
}

int IntPush(SqStack1 *S1int e1)/*入栈*/
{
    *(*S1).top++=e1;
    return OK;
}

int CharPush(SqStack2 *S2char e2)/*入栈*/
{
    *(*S2).top++=e2;
    return 1;
}

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=*--(*S2).top;
    return e2;
}
             
char Precede(char achar b)                  
{//运算符优先级比较
    int ij;
  char Table[8][8]={‘ ‘‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘#‘     
                    ‘+‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
                    ‘-‘‘>‘‘>‘‘<‘‘<‘‘<‘‘>‘‘>‘
                    ‘*‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
                    ‘/‘‘>‘‘>‘‘>‘‘>‘‘<‘‘>‘‘>‘
                    ‘(‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘ ‘
                    ‘)‘‘>‘‘>‘‘>‘‘>‘‘ ‘‘>‘‘>‘
                    ‘#‘‘<‘‘<‘‘<‘‘<‘‘<‘‘ ‘‘=‘
                   };      /*运算符优先级表格*/  
    for(i=0;i<8;i++)   /*纵坐标寻找*/
        if(Table[0][i]==a)          
            break;
    for(j=0;j<8;j++)    /*横坐标寻找*/
        if(Table[j][0]==b)
            break;
    return Table[j][i];  /*返回比较结果*/
}

int Operate(int achar thetaint b)     
{ //计算表达式值:主要是将大的表达式转化为小的表达式进行逐步求值
    int c;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        545  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.dsw

     文件      33792  2009-07-20 08:58  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.ncb

     文件      12514  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.cpp

     文件       1339  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.plg

     文件          5  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\N_REC.txt

     文件        552  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\SHITIKU.txt

     文件         40  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\markrec.txt

     文件      48640  2009-07-20 08:58  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.opt

     文件       4332  2009-07-20 08:58  利用栈求表达式课程设计\利用栈求表达式值\liyongzhan.dsp

     文件      33792  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\vc60.idb

     文件      45056  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\vc60.pdb

     文件     228000  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\liyongzhan.pch

     文件      33531  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\liyongzhan.obj

     文件     229832  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\liyongzhan.ilk

     文件     192612  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\liyongzhan.exe

     文件     443392  2009-07-20 08:50  利用栈求表达式课程设计\利用栈求表达式值\Debug\liyongzhan.pdb

     文件          5  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\Debug\N_REC.txt

     文件        552  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\Debug\SHITIKU.txt

     文件         40  2009-07-20 08:37  利用栈求表达式课程设计\利用栈求表达式值\Debug\markrec.txt

     文件          5  2009-07-20 08:37  利用栈求表达式课程设计\报告书\源程序\N_REC.txt

     文件         40  2009-07-20 08:37  利用栈求表达式课程设计\报告书\源程序\markrec.txt

     文件     192612  2009-07-20 08:50  利用栈求表达式课程设计\报告书\源程序\liyongzhan.exe

     文件        552  2009-07-20 08:37  利用栈求表达式课程设计\报告书\源程序\SHITIKU.txt

     文件      12513  2011-06-24 10:02  利用栈求表达式课程设计\报告书\源程序\liyongzhan.cpp

     文件     125952  2011-12-22 19:32  利用栈求表达式课程设计\报告书\数据结构课程设计报告.doc

     目录          0  2009-07-20 08:58  利用栈求表达式课程设计\利用栈求表达式值\Debug

     目录          0  2009-07-20 09:02  利用栈求表达式课程设计\报告书\源程序

     目录          0  2009-07-20 08:58  利用栈求表达式课程设计\利用栈求表达式值

     目录          0  2009-07-20 08:59  利用栈求表达式课程设计\报告书

     目录          0  2009-07-20 08:53  利用栈求表达式课程设计

............此处省略3个文件信息

评论

共有 条评论