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

    1.设计思路:

       首先控制打印数量,前面一半设计整数的计算,后面一半设计分数的计算。

    先考虑不加括号的情况, 从是否有乘除法开始考虑。在没有乘除法,也就是只有加减法的时候,控制加减法有无负号,可以用生成随机数12来控制负号出现的概率。而在有乘除法的情况下,也就是加减乘除都有的情况下,再考虑除法是否有余数,如果没有余数,先生成除数,除数的倍数为被除数。如果有余数,则在倍数的基础上加1。如果有括号,那么就生成四个数字的混合了加减乘除的算式再加上括号。

    2.源代码

      1 #include <iostream>
      2 #include<stdlib.h>
      3 #include<stdio.h>
      4 #include<time.h>
      5 using namespace std;
      6 
      7 int number()//控制生成题目的数量
      8 {
      9     int n;
     10     cout <<"请输入要生成题目的数量"<<endl;
     11     cin>>n;
     12     return n;
     13 
     14 }
     15 
     16 int multiplydivide()//控制是否有乘除法
     17 {
     18     int i;
     19     cout <<"有乘除法请按1,没有请按2"<<endl;
     20     cin>>i;
     21     return i;
     22 }
     23 int minus()//控制加减是否有负号
     24 {
     25     int i;
     26     //srand((unsigned)time(NULL));
     27     //i=rand()%1+1;
     28     cout <<"加减有负号请按1,没有请按2"<<endl;
     29     cin>>i;
     30     return i;
     31 }
     32 int remainder()//控制除法是否有余数
     33 {
     34     int i;
     35     cout <<"除法有余数请按1,没有请按2"<<endl;
     36     cin>>i;
     37     return i;
     38 }
     39 int gongyue(int a,int b)//找出分子分母的公约数
     40 {
     41     int min,max;
     42     max=a>b?a:b;
     43     min=a<b?a:b;
     44     if(max%min==0)
     45         return min;
     46     else 
     47         return gongyue(min,max%min);
     48 }
     49 
     50 void main()
     51 {
     52     srand((unsigned)time(NULL));
     53     int n;
     54     n=number();//控制输出题目的数量
     55     int parenthese;//控制式子中是否有括号
     56     cout<<"生成的算式中有无括号?有请按1,没有请按2"<<endl;
     57     cin>>parenthese;
     58     if(parenthese==1)//有括号
     59     {
     60         int i;
     61             srand((unsigned)time(NULL));
     62             int j;
     63             if(n%2==0)
     64                 j=n/2;//前面一半生成整数的题目
     65             else
     66                 j=n/2+1;//后面一半生成分数的题目
     67             for(i=0;i<j;i++)//加减法的带括号整数题目,无负号
     68                 {
     69                      int num1;
     70                      num1=rand()%100+1;
     71                         cout<<num1;
     72                      int sign;
     73                      sign=rand()%2+1;
     74                      if(sign==1)
     75                          cout<<"*(";
     76                      if(sign==2)
     77                          cout<<"÷(";
     78                      int num2;
     79                      num2=rand()%100+1;
     80                         cout<<num2;
     81                         sign=rand()%2+1;
     82                      if(sign==1)
     83                          cout<<"+";
     84                      if(sign==2)
     85                          cout<<"-";
     86                      int num3;
     87                       num3=rand()%100+1;
     88                       cout<<num3<<")";
     89                       sign=rand()%4+1;
     90                       if(sign==1)
     91                          cout<<"*";
     92                      if(sign==2)
     93                          cout<<"÷";
     94                      if(sign==3)
     95                          cout<<"+";
     96                      if(sign==4)
     97                          cout<<"-";
     98 
     99                        int num4;
    100                       num4=rand()%100+1;
    101                      cout<<num4<<"="<<endl;
    102                   }
    103             for(i=0;i<n-j;i++)//加减法的带括号分数题目,无负号
    104                  {
    105                     int fz;
    106                     int fm;
    107                      fz=rand()%100+1;
    108                      fm=rand()%100+1;
    109                      int a;
    110                      a=gongyue(fz,fm);
    111                      fz=fz/a;
    112                      fm=fm/a;
    113                      cout<<fz<<"/"<<fm;
    114                      int sign;
    115                      sign=rand()%2+1;
    116                      if(sign==1)
    117                          cout<<"*(";
    118                      if(sign==2)
    119                          cout<<"-(";
    120                      fz=rand()%100+1;
    121                      fm=rand()%100+1;
    122                      a=gongyue(fz,fm);
    123                      fz=fz/a;
    124                      fm=fm/a;
    125                      cout<<fz<<"/"<<fm;
    126                      sign=rand()%2+1;
    127                      if(sign==1)
    128                          cout<<"+";
    129                      if(sign==2)
    130                          cout<<"-";
    131                      fz=rand()%100+1;
    132                      fm=rand()%100+1;
    133                      a=gongyue(fz,fm);
    134                      fz=fz/a;
    135                      fm=fm/a;
    136                      cout<<fz<<"/"<<fm<<")";
    137                      sign=rand()%4+1;
    138                       if(sign==1)
    139                          cout<<"*";
    140                      if(sign==2)
    141                          cout<<"÷";
    142                      if(sign==3)
    143                          cout<<"+";
    144                      if(sign==4)
    145                          cout<<"-";
    146                       fz=rand()%100+1;
    147                      fm=rand()%100+1;
    148                      a=gongyue(fz,fm);
    149                      fz=fz/a;
    150                      fm=fm/a;
    151                      cout<<fz<<"/"<<fm<<"="<<endl;
    152             }
    153     }
    154     if(parenthese==2)//没有括号
    155     {
    156         int a;
    157         a=multiplydivide();
    158         int re;
    159         re=remainder();
    160         if(a==1)//有乘除法且除法有余数
    161         {
    162                int b;
    163                b=minus();
    164         if(b==1)//有负号的加减法
    165         {
    166             int i;
    167             srand((unsigned)time(NULL));
    168             for(i=0;i<n;i++)//
    169                 {
    170                      int num,num1,num2;
    171                      int minus;
    172                     num1=rand()%100+1; 
    173                      minus=rand()%2+1;
    174                      if(minus==1)
    175                        {
    176                             num=(-1)*rand()%100+1;
    177                             if(num!=0)
    178                                 cout<<"("<<num<<")="<<endl;
    179                             else
    180                                 cout<<num<<"="<<endl;
    181                         }
    182                         if(minus==2)
    183                             {
    184                                 num=rand()%100+1;
    185                                 cout<<num<<"="<<endl;
    186                              }
    187                         int suiji;
    188                         suiji=rand()%5+1;
    189                         int re=remainder();
    190                         if(re==1)//有加减乘除且除法有余数
    191                             num2=num*suiji+1;
    192                         if(re==1)//有加减乘除且除法无余数
    193                             num2=num*suiji;
    194                         int sign;
    195                          sign=rand()%4+1;
    196                         if(sign==1)
    197                             cout<<num1<<"+"<<num<<"="<<endl;
    198                         if(sign==2)
    199                            cout<<num1<<"-"<<num<<"="<<endl;
    200                         if(sign==3)
    201                            cout<<num<<"*"<<num1<<"="<<endl;
    202                        if(sign==4)
    203                          cout<<num2<<"÷"<<num<<"="<<endl;
    204                   
    205             
    206             }
    207                  
    208         
    209         }
    210          
    211         }
    212     
    213         if(a==2)//没有乘除法,只有加减法
    214         {
    215         int b;
    216         b=minus();
    217         if(b==1)//有负号的加减法
    218         {
    219             int i;
    220             srand((unsigned)time(NULL));
    221             int j;
    222             if(n%2==0)
    223                 j=n/2;//前面一半生成整数的题目
    224             else
    225                 j=n/2+1;//后面一半生成分数的题目
    226             for(i=0;i<j;i++)//加减法的整数题目,有负号
    227                 {
    228                      int num;
    229                      int minus;
    230                      minus=num=rand()%2+1;
    231                      if(minus==1)
    232                        {
    233                             num=(-1)*rand()%100+1;
    234                             if(num!=0)
    235                                 cout<<"("<<num<<")";
    236                             else
    237                                 cout<<num;
    238                         }
    239                         if(minus==2)
    240                             {
    241                                 num=rand()%100+1;
    242                                 cout<<num;
    243                              }
    244                      int sign;
    245                      sign=rand()%2+1;
    246                      if(sign==1)
    247                          cout<<"+";
    248                      if(sign==2)
    249                          cout<<"-";
    250                     minus=num=rand()%2+1;
    251                      if(minus==1)
    252                        {
    253                             num=(-1)*rand()%100+1;
    254                             if(num!=0)
    255                                 cout<<"("<<num<<")="<<endl;
    256                             else
    257                                 cout<<num<<"="<<endl;
    258                         }
    259                         if(minus==2)
    260                             {
    261                                 num=rand()%100+1;
    262                                 cout<<num<<"="<<endl;
    263                              }
    264                   }
    265             for(i=0;i<n-j;i++)//加减法的分数题目,有负号
    266                  {
    267                     int fz;
    268                     int fm;
    269                     int minus;
    270                      minus=rand()%2+1;
    271                      fz=rand()%100+1;
    272                      fm=rand()%100+1;
    273                      int a;
    274                      a=gongyue(fz,fm);
    275                      fz=fz/a;
    276                      fm=fm/a;
    277                      if(minus==1)
    278                         {
    279                             fz=(-1)*fz;
    280                             if(fz!=0)
    281                                 cout<<"("<<fz<<"/"<<fm<<")";
    282                             else
    283                                 cout<<fz<<"/"<<fm;
    284                          }
    285                     if(minus==2)
    286                         {
    287                                 cout<<fz<<"/"<<fm;
    288                          }
    289                      int sign;
    290                      sign=rand()%2+1;
    291                      if(sign==1)
    292                          cout<<"+";
    293                      if(sign==2)
    294                          cout<<"-";
    295                      fz=rand()%100+1;
    296                      fm=rand()%100+1;
    297                      a=gongyue(fz,fm);
    298                      fz=fz/a;
    299                      fm=fm/a;
    300                      cout<<fz<<"/"<<fm<<"="<<endl;
    301             }
    302                  
    303             
    304 
    305         }
    306         if(b==2)//没有负号
    307         {
    308             int i;
    309             srand((unsigned)time(NULL));
    310             int j;
    311             if(n%2==0)
    312                 j=n/2;//前面一半生成整数的题目
    313             else
    314                 j=n/2+1;//后面一半生成分数的题目
    315             for(i=0;i<j;i++)//加减法的整数题目,无负号
    316                 {
    317                      int num;
    318                      num=rand()%100+1;
    319                         cout<<num;
    320                      int sign;
    321                      sign=rand()%2+1;
    322                      if(sign==1)
    323                          cout<<"+";
    324                      if(sign==2)
    325                          cout<<"-";
    326                      num=rand()%100+1;
    327                      cout<<num<<"="<<endl;
    328                   }
    329             for(i=0;i<n-j;i++)//加减法的分数题目,无负号
    330                  {
    331                     int fz;
    332                     int fm;
    333                      fz=rand()%100+1;
    334                      fm=rand()%100+1;
    335                      int a;
    336                      a=gongyue(fz,fm);
    337                      fz=fz/a;
    338                      fm=fm/a;
    339                      cout<<fz<<"/"<<fm;
    340                      int sign;
    341                      sign=rand()%2+1;
    342                      if(sign==1)
    343                          cout<<"+";
    344                      if(sign==2)
    345                          cout<<"-";
    346                      fz=rand()%100+1;
    347                      fm=rand()%100+1;
    348                      a=gongyue(fz,fm);
    349                      fz=fz/a;
    350                      fm=fm/a;
    351                      cout<<fz<<"/"<<fm<<"="<<endl;
    352             }
    353         }
    354         }
    355     }
    356     
    357 
    358 
    359 
    360 
    361     }

    3.截图

    4.项目计划总结

    听课

    编程

    看资料

    日总计

    3.14周一

    100min

    100min

    3.15

    60min

    60min

    3.16

    72min

    72min

    3.17

    110min

    110min

    3.18

    100min

    60min

    160min

    3.19

    70min

    30min

    100min

    周总计

    200min

    312min

    90min

    602min

    5.时间记录日志

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3.14

    8:00

    9:50

    10

    100min

     上课

    下课休息10min

    3.15

    14:30

    15:30

    60min

    构思程序,

    查阅资料

    3.16

    15:30

    16:52

    10min

    72min

    两人合作讨论思路

    休息10min

    3.17

    19:00

    21:00

    10min

    110min

    写程序

    3.18

    19:00

    20:00

    60min

    写程序

    3.19

    8:00

    9:40

    70min

    写程序

    6.缺陷记录日志

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3.17

    1

    20

    编码

    编译

    1min

    漏掉了分号

    3.17

    2

    20

    编码

    编译

    1min

    If后面的语句漏掉了{}

    3.18

    3

    20

    编码

    编译

    1min

    漏掉了分号

    3.18

    4

    20

    设计

    编译

    1min

    生成的随机数一样

    5

    20

    编码

    编译

    1min

    生成的算式格式不对,没有换行

    3.19

    6

    20

    编码

    编译

    1min

    分子分母没有化简,不符合题目要求

  • 相关阅读:
    UnityVS(Visual Studio Tools For Unity)的安装与使用
    Balsamiq Mockups注册码
    python基础之os.system函数
    jenkins配置记录(1)--添加用户权限
    chromedriver与chrome各版本及下载地址
    高阶面试官应掌握哪些面试技巧
    [面试技巧]16个经典面试问题回答思路
    自动代码质量分析(GitLab+JenKins+SonarQube)
    Git提交代码自动触发JenKins构建项目
    Allure 安装及使用
  • 原文地址:https://www.cnblogs.com/yanyuqing/p/5294781.html
Copyright © 2011-2022 走看看