首页 > 代码库 > 小学生四则运算程序

小学生四则运算程序

需求分析:

    为小学生能够出四则运算的题,并且能对其所答的答案进行判断,如答错能显示正确答案。

代码设计:

    生成随机数和运算符:

int convert(ZX number[100]){    stack<ZX>s2;    for(int i=0;i<t;i++)    {        if(number[i].b==1)//操作数         s2.push(number[i]);        else        {            if(number[i].a==))            {                  while(s1.top().a!=()                {                    s2.push(s1.top());                    s1.pop();                }                s1.pop();            }            else if(s1.empty()||s1.top().a==(||number[i].a==()            s1.push(number[i]);             else            {                if(number[i].b==0&&(number[i].a==*||number[i].a==/)&&(s1.top().a==+||s1.top().a==-))                s1.push(number[i]);                else                {                    s2.push(s1.top());                    s1.pop();                    i--;                }            }        }        }    while(!s1.empty())    {        s2.push(s1.top());        s1.pop();    }    while(!s2.empty())    {        ZX s=s2.top();        s2.pop();        s1.push(s);    }    ZX c1;    int c2,c3,c4;    stack<int>s3;    while(!s1.empty())    {        c1=s1.top();        s1.pop();        if(c1.b==1)        s3.push(c1.a);        else        {            c2=s3.top();            s3.pop();            c3=s3.top();            s3.pop();            switch(c1.a)            {                case +:c4=c3+c2;break;                case -:c4=c3-c2;break;                case *:c4=c3*c2;break;                case /:c4=c3/c2;break;            }            s3.push(c4);        }        }    return s3.top();}

    判断数字或括号前后面所跟的参数:

void passkh(ZX number[100])//去括号{    for(int i=1;i<t-1;i++)    {        number[i-1].a=number[i].a;        number[i-1].b=number[i].b;    }    t-=2;}void aftersz(ZX number[100])//数字后跟什么{    int i=rand()%10;    if(i<=2)    {        int j=rand()%4;        switch(j)        {            case 0:number[t].a=+;break;            case 1:number[t].a=-;break;            case 2:number[t].a=*;break;            case 3:number[t].a=/;break;        }        number[t].b=0;        t++;        afterfh(number);    }    else if(i>=3&&i<=6)    {        if(n1==1)        {            aftersz(number);        }        else        return ;    }    else//右括号     {        if(n>0&&number[t-2].a!=(&&number[t-2].b!=0)        {            number[t].b=0;            number[t].a=);            n--;             t++;            aftersz(number);        }        else        aftersz(number);    }    }void afterfh(ZX number[100])//括号后跟什么{        int p=rand()%10;        if(p>=3)//数字         {            number[t].b=1;            number[t].a=rand()%100;                t++;            n1++;            aftersz(number);        }        else//左括号         {            number[t].b=0;            number[t].a=(;            n++;            t++;            afterfh(number);        }}

    随机生成四则运算试子并让学生进行答题并判断,如果答错显示正确答案。

int main(){    printf("下面是数学题请同学进行答题:\n");    printf("\n");    /*随机生成一个四则运算(100以内)      第一位 左括号(0-2) 数字(3-9)       数字后面是+-/*(0-2) 什么都没有(3-6) 右括号(7-9)      右括号后面  +-/*(0-2) 什么都没有(3-6) 右括号(7-9)       +-/*后面 左括号(0-2) 数字(3-9)       左括号后面 左括号(0-2) 数字(3-9)    */        while(1)    {        n1=0,n=0;        ZX number[100];        t=0;        afterfh(number);        while(n>0)        {                        number[t].a=);            number[t++].b=0;                n--;                }          while(number[0].a==(&&number[0].b==0&&number[t-1].b==0&&number[t-1].a==))        passkh(number);         while(number[t-3].a==(&&number[t-3].b==0)        {                number[t-3].a=number[t-2].a;                number[t-3].b=number[t-2].b;                t-=2;        }        for(int i=0;i<t;i++)        {            if(number[i].b==0)            printf("%c",number[i].a);            else            printf("%d",number[i].a);        }        printf("\n");        printf("请作答:\n");        int p,q=convert(number);        scanf("%d",&p);        if(p==q)        printf("回答正确\n\n");        else        printf("回答错误 正确结果为:%d\n\n",q);            }    return 0;}

    测试结果:

技术分享

 

小学生四则运算程序