zoukankan      html  css  js  c++  java
  • 四则运算

    #include<stdio.h>

    #include<stdlib.h>

    #include<time.h>

    int a,n,nright=0,nwrong=0,flag5,flag3=1,flag6=0,mark,etime=0,etime1,etime2;

    char op,choice;

    void award()

    {

        char c;

        if(mark==100)                                          

        {

        c=rand()%2+1;

        printf("%28c %21c ",c,c);

        c=rand()%2+1;

        printf("%26c %3c %17c %3c ",c,c,c,c);

        c=rand()%2+1;

        printf("%24c %7c %13c %7c ",c,c,c,c);

        c=rand()%2+1;

        printf(" ");

        printf(" ");

        printf("%35c %7c ",c,c);

        c=rand()%2+1;

        printf("%37c %3c ",c,c);

        c=rand()%2+1;

        printf("%39c ",c);

        }

        else if(mark>=90)

        {

        c=rand()%2+1;

        printf("%28c %21c ",c,c);

        c=rand()%2+1;

        printf("%26c %3c %17c %3c ",c,c,c,c);

        c=rand()%2+1;

        printf("%24c %7c %13c %7c ",c,c,c,c);

        c=rand()%2+1;

        printf(" ");

        printf(" ");

        printf("%35c %c %c %c %c ",c,c,c,c,c);

        }

        else if(mark>=80)

        {

        c=rand()%2+1;

        printf(" ");

        printf("%28c %c %c %c %c %12c %c %c %c %c ",c,c,c,c,c,c,c,c,c,c);

        printf(" ");

        printf(" ");

        printf(" ");

        c=rand()%2+1;

        printf("%38c %7c ",c,c);

        c=rand()%2+1;

        printf("%40c %3c ",c,c);

        c=rand()%2+1;

        printf("%42c ",c);

        }

        else if(mark>=60)

        {

        c=22;

        printf(" ");

        printf("%28c %c %c %c %c %12c %c %c %c %c ",c,c,c,c,c,c,c,c,c,c);

        printf(" ");

        printf(" ");

        printf(" ");

        printf(" ");

        printf("%38c %c %c %c %c ",c,c,c,c,c);

     

        }

        else

        {

        c=22;

        printf(" ");

        printf("%28c %c %c %c %c %12c %c %c %c %c ",c,c,c,c,c,c,c,c,c,c);

        c=25;

        printf("%32c %20c ",c,c);

        printf("%32c %20c ",c,c);

        printf("%32c %20c ",c,c);

        printf("%32c %20c ",c,c);

        }

        }

     

    void score(int seconds,int i)

    {

         int seconds0;

         seconds0=i*n;

         if(etime==0)

         printf(" ");

         else

        {

        if(seconds<=seconds0)                          

        {

            mark=100*nright/(nright+nwrong);

        }

        else if(seconds<=(seconds0*1.2))

        {

            mark=95*nright/(nright+nwrong);

        }

        else if(seconds<=(seconds0*1.5))

        {

            mark=90*nright/(nright+nwrong);

        }

        else if(seconds<=(seconds0*2.0))

        {

            mark=85*nright/(nright+nwrong);

        }

        else

        {

            mark=85*nright/(nright+nwrong);

        }

        printf("总分数%d ",mark);

        }

    }

    int judge(int n1)

    {

     

        if(n1==a)

        {

        printf("正确 ");

        nright++;

        }

        else

        {

        printf("错误 ");

        nwrong++;

        }

        return nwrong;

    }

    int hunhe()

    {

        int flag2=1,flag1=0,inumber;

        int b=0,e,input;

    int i2;

    char op2;

        a=flag5==0?rand()%10+1:rand()%100+1;

        etime=flag5==0?7:9;

        op2=rand()%6+42;

        while((op2!='*')&&(op2!='+')&&(op2!='-')&&(op2!='/'))        //*随机出加减乘除符号*//

        op2=rand()%6+42;

        inumber=rand()%4+2;                                          //*随机输出混合式长度*//

        printf("%d%c",a,op2);

        etime1=time(0);

        for(i2=1;i2<=inumber;i2++)

        {

            if(op2=='+'||op2=='-')

        {

     

            if(op2=='-')

            flag2=0;

            if(op2=='+')

            flag2=1;

            b=flag5==0?rand()%10+1:rand()%100+1;                     

            switch(op2)

        {

            case '+':

            a+=b;

            break;

            case '-':

            while(b>a)                                               //*控制不输出负数*//

            {

                b=rand()%100+0;

            }

            a-=b;

            break;

        }

        printf("%d",b);

        op2=rand()%6+42;

        while((op2!='*')&&(op2!='+')&&(op2!='-')&&(op2!='/'))

        op2=rand()%6+42;

        printf("%c",op2);

        flag1++;

        }

            if(op2=='*'||op2=='/')

        {

            if(flag1!=0)

            {

             if(flag2==1)                                        

                 a-=b;

             if(flag2==0)

                 a+=b;

             }

            if(flag1==0)

            {

             b=a;

            }

        e=flag5==0?rand()%10+1:rand()%100+1;

            switch(op2)

        {

            case '*':

            if(flag2==0)

            {

             while((b*e)>a)                                      //*控制不输出负数*//

            {

                e=flag5==0?rand()%10+1:rand()%100+1;

            }

            b*=e;

            }

            if(flag2==1)

            {

             b*=e;

            }

            break;

            case '/':

            if(flag2==0)

            {

                while((b/e)>a||((b%e)!=0))                            //*控制不输出负数及小数*//

            {

               e=flag5==0?rand()%10+1:rand()%100+1;

            }

            b/=e;

            }

            if(flag2==1)

            {

            while(((b%e)!=0))

            {

             e=flag5==0?rand()%10+1:rand()%100+1;

            }

            b/=e;

            }

            break;

     

        }

        printf("%d",e);

        op2=rand()%6+42;

        while((op2!='+')&&(op2!='-'))

        op2=rand()%6+42;

        printf("%c",op2);

            if(flag1!=0)                                       //*根据前一个运算符的加或减来进行后期运算*//

            {

            if(flag2==1)

            a+=b;

            if(flag2==0)

            a-=b;

            }

            if(flag1==0)

            a=b;

        }

        }

        printf("=");

        scanf("%d",&input);

        judge(input);

        etime2=time(0);

    }

    int jiajian()

    {

        int flag4,b,input,d;

         flag4=rand()%2+1;

         etime=flag5==0?2:4;                                             //*输出每道题所需时间*//

    switch(flag4)

    {

        case 1:

    d=flag5==0?rand()%10+1:rand()%100+1;             //*随机输出混合式长度*//

    b=flag5==0?rand()%10+1:rand()%100+1;

    a=d+b;

    printf("%d+%d=",d,b);

    scanf("%d",&input);

    break;

    case 2:

    do

    {

    d=flag5==0?rand()%10+1:rand()%100+1;              //*随机输出混合式长度*//

    b=flag5==0?rand()%10+1:rand()%100+1;

    }while(d-b<0);

        a=d-b;

    printf("%d-%d=",d,b);

    scanf("%d",&input);

        break;

    }

    judge(input);

    }

    int chengchu()

    {

     int flag4,input,b,d;

     etime=flag5==0?2:4;

                flag4=rand()%2+1;

    switch(flag4)

    {

        case 1:

    d=flag5==0?rand()%10+1:rand()%100+1;

    b=flag5==0?rand()%10+1:rand()%100+1;

    a=d*b;

    printf("%d*%d=",d,b);

    scanf("%d",&input);

    break;

    case 2:

    do

    {

    d=flag5==0?rand()%10+1:rand()%100+1;

    b=flag5==0?rand()%10+1:rand()%100+1;

    }while(d%b!=0);

    a=d/b;

    printf("%d/%d=",d,b);

    scanf("%d",&input);

        break;

    }

    judge(input);

    }

    int lianjiajian()

    {

        int b,i,inumber,input;

        char op2;

        etime=5;

        srand(time(0));

        a=rand()%10+1;

        op2=rand()%6+42;

        while((op2!='+')&&(op2!='-'))

        op2=rand()%6+42;

        inumber=rand()%4+2;

        printf("%d%c",a,op2);

        for(i=1;i<=inumber;i++)

        {

            b=rand()%10+0;

            switch(op2)

            {

                case '+':

                a+=b;

                break;

                case '-':

                while(a<b)

             b=rand()%10+0;

                a-=b;

                break;

            }

            printf("%d",b);

        op2=rand()%6+42;

        while((op2!='+')&&(op2!='-'))

        op2=rand()%6+42;

        printf("%c",op2);

        }

        printf("=");

        scanf("%d",&input);

        judge(input);

    }

    int lianchengchu()

    {

        int b,i,inumber,input;

        char op2;

        etime=5;

        srand(time(0));

        a=rand()%10+0;

        op2=rand()%6+42;

        while((op2!='*')&&(op2!='/'))

        op2=rand()%6+42;

        inumber=rand()%4+2;

        printf("%d%c",a,op2);

        for(i=1;i<=inumber;i++)

        {

            b=rand()%10+1;

            switch(op2)

            {

                case '*':

                a*=b;

                break;

                case '/':

                while(a%b!=0)

                b=rand()%10+1;

                a/=b;

                break;

            }

            printf("%d",b);

        op2=rand()%6+42;

        while((op2!='*')&&(op2!='/'))

        op2=rand()%6+42;

        printf("%c",op2);

        }

        printf("=");

        scanf("%d",&input);

        judge(input);

    }

    int main()

    {

        int i1,i2,i3,n,second1=0,second2=0,second3=0;

        int flag2=1,flag1=0;

        char mode,esc;

        char f[3][51]={"##################################################",

                       "#提示:若要退出按除数字回车外的任意键进入选择菜单#",

                       "##################################################"};

        char a[5][36]={"###################################",

                       "#            Math Game            #",

                       "#                                 #",

                       "#03          低吟w夏伤          #",

                       "###################################"};

        for(i2=0;i2<5;i2++)

        {

            printf("%57s ",a[i2]);

        }

        srand(time(0));

        do

        {

        printf("                               请选择难度 ");

        printf("                                 1、新手 ");

        printf("                                 2、入门 ");

        printf("                                 3、高手 ");

        printf("                                 4、大师 ");

        for(i3=0;i3<3;i3++)

        {

            printf("%64s ",f[i3]);

        }

        printf("  ");

        scanf("%c",&mode);

        second1=time(0);

        if(mode<49||mode>52)                             //*任意键退出*//

        {

         printf("A、继续 B、退出游戏 ");

         op=getchar();

         op=getchar();

          if(op=='a'||op=='A')

     {

         op='a';

         flag6=1;

     }

         else if(op=='b'||op=='B')

         return 0;

     else

     {

     op='a';

             printf("请重新选择 ");

             flag6=1;

     }

        }

    do

    {

        if(flag6==0)

        op='m';

        switch(mode)

        {

        case '1':

        choice=getchar();

        printf("经典模式 请选择游戏难度 ");

        printf("1、十以内加减 2、十以内乘除 3、一百以内加减 4、一百以内乘除 5、十以内连加连减 6、十以内连乘连除 7、十以内混合运算 8、一百以内混合运算 ");

        choice=getchar();

        if(choice<49||choice>56)                                    //*任意键退出*//

        {

         printf("A、回到主菜单 B、退出游戏 C、继续 ");

         op=getchar();

         op=getchar();

     if(op=='b'||op=='B')

         return 0;

         else if(op=='a'||op=='A')

         {

             flag6=1;

             break;

         }

         else if(op=='c'||op=='C')

         {

             op='c';

             flag3=0;

         }

         else

     {

     op='c';

     printf("请重新选择 ");

     flag3=0;

         }

        }

        if(flag3!=0)

        {

        printf("请输入答题数 ");

        scanf("%d",&n);

        esc=getchar();

        }

        second1=time(0);

        for(i1=1;i1<=n;i1++)                 //*控制答题数进行循环*//

        {

            switch(choice)

        {

            case '1':

            flag5=0;

            jiajian();

            break;

            case '2':

            flag5=0;

            chengchu();

            break;

            case '3':

            flag5=1;

            jiajian();

            break;

            case '4':

            flag5=1;

            chengchu();

            break;

            case '5':

            lianjiajian();

            break;

            case '6':

            lianchengchu();

            break;

            case '7':

            flag5=0;

            hunhe();

            break;

            case '8':

            flag5=1;

            hunhe();

            break;

        }

        flag2=1;

        flag1=0;

        }

        if(flag3!=0)

        choice=getchar();

        break;

        case '2':

        second1=time(0);

        choice=getchar();

        printf("升级模式 您必须答对所有题才能进入下一关 按回车开始游戏 ");

        choice=getchar();

        if((choice<49||choice>56)&&choice!=' ')

        {

         printf("A、回到主菜单 B、退出游戏 C、继续 ");

         op=getchar();

         op=getchar();

     if(op=='b'||op=='B')

         return 0;

         else if(op=='a'||op=='A')

         {

             flag6=1;

             break;

         }

         else if(op=='c'||op=='C')

         {

             op='c';

             flag3=0;

         }

         else

     {

     op='c';

     printf("请重新选择 ");

     flag3=0;

         }

        }

        printf("第一关 ");

        for(i2=1;i2<=5;i2++)

        {

            flag5=rand()%1+0;

            jiajian();

        }

        if(nwrong==0)

        {

              printf("第二关 ");

              for(i2=1;i2<=8;i2++)

              {

                  flag5=rand()%1+0;

                  chengchu();

              }

        }

     

        if(nwrong==0)

        {

              printf("第三关 ");

              for(i2=1;i2<=10;i2++)

              {

                  lianjiajian();

              }

        }

     

        if(nwrong==0)

        {

              printf("第四关 ");

              for(i2=1;i2<=8;i2++)

              lianchengchu();

        }

     

        if(nwrong==0)

        {

               printf("第五关 ");

               for(i2=1;i2<=8;i2++)

               {

                   flag5=rand()%1+0;

                   hunhe();

               }

        }

        else

        printf("闯关失败 ");

        break;

        case '3':

        second1=time(0);

        choice=getchar();

        printf("无限模式 你只有三次犯错的机会 按回车开始游戏 ");

        choice=getchar();

        if((choice<49||choice>56)&&choice!=' ')

        {

         printf("A、回到主菜单 B、退出游戏 C、继续 ");

         op=getchar();

         op=getchar();

     if(op=='b'||op=='B')

         return 0;

         else if(op=='a'||op=='A')

         {

             flag6=1;

             break;

         }

         else if(op=='c'||op=='C')

         {

             op='c';

             flag3=0;

         }

         else

     {

     op='c';

     printf("请重新选择 ");

     flag3=0;

         }

        }

        while(nwrong<=2)                    //*逐渐增加难度*//

        {

            flag5=rand()%1+0;

            if(nright<=3)

            jiajian();

            if(nright>3&&nright<=6)

            chengchu();

            if(nright>6&&nright<=10)

            lianjiajian();

            if(nright>10&&nright<=14)

            lianchengchu();

            if(nright>14)

             hunhe();

        }

        break;

        case '4':

        srand(time(0));

        choice=getchar();

        printf("时间模式 你有60秒左右的时间来进行游戏 按回车开始游戏 ");

        choice=getchar();

        if((choice<49||choice>56)&&choice!=' ')

        {

         printf("A、回到主菜单 B、退出游戏 C、继续 ");

         op=getchar();

         op=getchar();

     if(op=='b'||op=='B')

         return 0;

         else if(op=='a'||op=='A')

         {

             flag6=1;

             break;

         }

         else if(op=='c'||op=='C')

         {

             op='c';

             flag3=0;

         }

         else

     {

     op='c';

     printf("请重新选择 ");

     flag3=0;

         }

        }

        second1=time(0);

        do

        {

            flag5=rand()%1+0;

             hunhe();

             second3+=(etime2-etime1);

        }while(second3<60);

        break;

        }

        flag3++;

        second2=time(0);

        }while(op=='c');

        if(flag6==0)

        {

        printf("共答对%d ",nright);

        printf("用时%d ",second2-second1);

        score(second2-second1,etime);

        award();

        nright=0;

        nwrong=0;

        printf("按回车继续 ");                   //*控制循环继续*//

        op=getchar();

        printf("你想继续吗? Y|N ");

        op=getchar();

        if(op=='y'||op=='Y')

        op='a';

        if(op=='n'||op=='N')

        return 0;

        }

        mode=getchar();

        flag6=0;

        }while(op=='a'||op=='A');

        return 0;

        }

  • 相关阅读:
    BUUCTF [XMAN2018排位赛]四道misc题汇总
    祥云杯2020 Misc题解
    win10更换pip源
    BUUCTF N1BOOK配套题目
    kali下docker安装教程
    湖湘杯2020 Misc题解
    7号夺宝1元购iPhone6s 1元众筹怎么玩
    html5 的服务器推送 Server-sent Events和 websocket这两个是不是同一个东西,是两个不同的?
    WebSocket 是什么原理?为什么可以实现持久连接?
    使用HTML5的十大原因
  • 原文地址:https://www.cnblogs.com/b6772x33a/p/5269935.html
Copyright © 2011-2022 走看看