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

    一、详细要求:

    1、 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。

    2、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。

    3、每道题目中出现的运算符个数不超过3个,括号不限。

    4、程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。

    例如,23 + 45 = 45 + 23 = 是重复的题目,6 × 8 = 8 × 6 = 也是重复的题目。

    3+(2+1)1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+33+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。

    5、把程序变成一个网页程序或智能手机程序, 用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判。

    二、代码

      1 #include<iostream.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 #include<math.h>
      5 int main()
      6 {
      7     double Ques1=1;
      8     int Ques01;
      9     int Ques2=1;
     10     int Ques3=100;
     11     char Ques4='y';
     12     int Ques5=1;
     13     char Ques6='n';
     14     char Ques7='n';
     15 Again:
     16     cout<<"请输入题目数量:";
     17     cin>>Ques1;
     18     Ques01=floor(Ques1);
     19     cout<<"请输入每行打印题目数(1-5):";
     20     cin>>Ques2;
     21     cout<<"请输入算式中数值的最大值:";
     22     cin>>Ques3;
     23     while(1)
     24     {
     25         cout<<"运算中需要乘除法吗?y:需要;n:不需要";
     26         cin>>Ques4;
     27         cout<<"减法运算需要有负数吗?y:需要;n:不需要";
     28         cin>>Ques7;
     29         cout<<"行间距(正整数):";
     30         cin>>Ques5;
     31         srand(time(NULL));
     32         if(Ques4=='y')
     33         {
     34             while(1)
     35             {
     36                 if(Ques1<1)
     37                 {
     38                     cout<<"输入有误,请重新输入题目数量:";
     39                     cin>>Ques1;
     40                     Ques01=floor(Ques1);
     41                 }
     42                 else
     43                 {
     44                     for(int j=0;j<Ques01;j++)
     45                     {
     46                         if(j!=0&&j%Ques2==0)
     47                         {
     48                             for(int i=0;i<Ques5;i++)
     49                             {
     50                                 cout<<endl;
     51                             }        
     52                         }
     53                         int num1=rand()%Ques3;
     54                         int num2=rand()%Ques3;
     55                         int sign=rand()%4;
     56                         switch(sign)
     57                         {
     58                         case 0:
     59                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
     60                             break;
     61                         case 1:
     62                             if(Ques7=='y')
     63                             {
     64                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
     65                             }
     66                             else
     67                             {
     68                                 if(num1>num2)
     69                                 {
     70                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
     71                                 }
     72                                 else
     73                                 {
     74                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
     75                                 }
     76                             }
     77                             break;
     78                         case 2:
     79                             cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"	";
     80                             break;
     81                         case 3:
     82                             if(num2!=0)
     83                             {
     84                                 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"	";
     85                             }
     86                             else
     87                             {
     88                                 j--;
     89                             }
     90                             break;
     91                         }
     92                     }
     93                     break;
     94                 }
     95             }
     96             break;
     97         }
     98         if(Ques4=='n')
     99         {
    100             while(1)
    101             {
    102                 if(Ques01<1)
    103                 {
    104                     cout<<"输入有误,请重新输入题目数量:";
    105                     cin>>Ques1;
    106                     Ques01=floor(Ques1);
    107                 }
    108                 else
    109                 {
    110                     for(int j=0;j<Ques01;j++)
    111                     {
    112                         if(j!=0&&j%Ques2==0)
    113                         {
    114                             for(int i=0;i<=Ques5;i++)
    115                             {
    116                                 cout<<endl;
    117                             }
    118                         }
    119                         int num1=rand()%Ques3;
    120                         int num2=rand()%Ques3;
    121                         int sign=rand()%2;
    122                         switch(sign)
    123                         {
    124                         case 0:
    125                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
    126                             break;
    127                         case 1:
    128                             if(Ques7=='y')
    129                             {
    130                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
    131                                 break;
    132                             }
    133                             else
    134                             {
    135                                 if(num1>num2)
    136                                 {
    137                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
    138                                     break;
    139                                 }
    140                                 else
    141                                 {
    142                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
    143                                     break;
    144                                 }
    145                             }
    146                             break;
    147                         }
    148                     }
    149                 }
    150                 break;
    151             }
    152             break;
    153         }
    154         
    155         else
    156         {
    157             cout<<"输入有误,请按要求输入!"<<endl;
    158         }
    159     }
    160     cout<<endl;
    161     while(1)
    162     {
    163         cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)";
    164         cin>>Ques6;
    165         if(Ques6=='y')
    166         {
    167             goto Again;
    168         }
    169         if(Ques6=='n')
    170         {
    171             goto Exit;
    172         }
    173         else
    174         {
    175             cout<<"输入有误,请重新输入:";
    176         }
    177     }
    178 Exit:
    179     return 0;
    180 }

    三、运行结果

     四、总结

    对于函数的使用不够娴熟,所以功能都是在主函数中实现的。

  • 相关阅读:
    Leetcode NO.110 Balanced Binary Tree 平衡二叉树
    Leetcode NO.226 Invert Binary Tree 翻转二叉树
    Leetcode NO.215 Kth Largest Element In An Array 数组中的第K个最大元素
    根据特征的浏览器判断
    Cygwin在打开在当前目录
    【转帖】科学对待 健康养猫 打造快乐孕妇
    解决chrome浏览器安装扩展、应用程序一直处在“检查中”的问题
    对【SQL SERVER 分布式事务解决方案】的心得补充
    关于“点击这里继续访问您选择的百度XXX”
    VBA一例:如何保持文本框焦点
  • 原文地址:https://www.cnblogs.com/liqing1/p/5612397.html
Copyright © 2011-2022 走看看