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

    一、题目要求:

    随机产生n道四则运算题,数字为整数或真分数。整数范围可选择,可以选择有无乘除法,
    可以判断除法是否有余数,可以判断加减结果有无负数,可以选择有无括号,可以打印。

    二、分析:

    1.首先是确定四则运算题的数目,只要将循环次数设置成输入的数字。

    2.确定数值范围时,将随机生成数的范围也用输入规定。

    3.确定有无括号时,将两个括号用char数组表示,将运算符也用一个char数组表示存储,数值是随机产生的,也用数组保存,然后按规律输出,

    比如先输出左括号,再输出数值,再输出运算符,再输出数值,再输出右括号。

    4.判断有无余数时,加法、减法、乘法继续存在,讨论除法这一特殊情况,判断有余数的话,就让两个数取余,如果两个数没余数的话就一直循环,直到有余数的式子产生。

    5.判断有无负数时,就让两个数交换大小,有负数时小的数减大的数,无负数时,大的数减小的数。

    三、用时:14小时

    四、代码:

      1 /*姓名:黄山成 班级:信1301-1 
      2 功能:随机产生n道四则运算题,数字为整数或真分数。整数范围可选择,可以选择有无乘除法,
      3 可以判断除法是否有余数,可以判断加减结果有无负数,可以选择有无括号,可以打印。
      4 */
      5 #include<iostream>
      6 using namespace std;
      7 #include <time.h>
      8 
      9 
     10 void opeators()
     11 {
     12   int c;
     13   c=rand()%3;
     14   switch(c)
     15   {
     16   case 0:cout<<" + ";break;
     17   case 1:cout<<" - ";break;
     18   case 2:cout<<" * ";break;
     19   //case 3:cout<<" / ";break;
     20   }
     21 
     22 }
     23 void proper(int &a,int &b,double c)//显示真分数的函数
     24 {
     25 if(a>b)
     26  {   
     27      int d;
     28     d=a;
     29     a=b;
     30     b=d;
     31  }
     32     c=((double)a)/((double)b);
     33 }
     34 
     35 void main()
     36 {  
     37     int figure_1=0,figure_2=0,figure_3=0,figure_4=0;
     38     double result_1=0;//分数的结果
     39     double result_2=0;
     40     int c,d,i,j,k;
     41 
     42    srand((unsigned)time(NULL));  
     43     cout<<"             ***简单的四则运算产生器***         "<<endl;
     44     cout<<"请输入题目的个数。"<<endl;
     45     int Number;
     46   cin>>Number;
     47 
     48   cout<<"请选择整数数值范围"<<endl;
     49    cout<<"a.1-30"<<endl;
     50    cout<<"b.1-50"<<endl;
     51    cout<<"c.1-80"<<endl;
     52    cout<<"d.1-100"<<endl;
     53    cout<<"请输入你的选择。"<<endl;
     54    char sele;
     55     cin>>sele;
     56 
     57         int range;//数值范围
     58    switch(sele)
     59     {
     60         case 'a':range=30;break;
     61         case 'b':range=50;break;
     62         case 'c':range=80;break;
     63         case 'd':range=100;break;
     64      }
     65   cout<<"是否有括号,y/n"<<endl;
     66  
     67         char judgement;
     68         cin>>judgement;
     69         if(judgement=='y')
     70            {
     71                for(i=0;i<Number;i++)
     72                {
     73                    int formula[10];
     74                    for(int m=0;m<10;m++)
     75                    {
     76                        formula[m]=rand()%range+1;
     77                    }
     78                    char sign[4]={'+','-','*','/'};
     79                    char bracket[2]={'(',')'};    
     80                    for(int n=0;n<3;n++)
     81                    {
     82                     j=rand()%9;
     83                      k=rand()%9;
     84                      d=rand()%4;
     85                      c=rand()%4;
     86                          int y=rand()%2;
     87                      switch(c)
     88                      {
     89                      case 0: cout<<bracket[0]<<formula[j]<<sign[d]<<formula[k]<<bracket[1]<<sign[c];
     90                      case 1: cout<<formula[j]<<sign[d]<<bracket[0]<<formula[k]<<sign[c]<<formula[j]<<bracket[1]<<sign[1]; 
     91                      }
     92                    }
     93                   cout<<formula[j]<<"+"<<formula[k]<<" ="<<endl; 94                }
     95            }
     96         else if(judgement=='n')
     97            {
     98                 cout<<"是否有乘除法,y/n"<<endl;
     99                 cin>>judgement;
    100                 if(judgement=='y')
    101                 {
    102                      cout<<"除法是否有余数,y/n"<<endl;
    103                      cin>>judgement;
    104                      if(judgement=='y')//除法有余数
    105                      {
    106                          for( i=0;i<Number;i++)
    107                          {
    108                          figure_1=rand()%range+1;
    109                          figure_2=rand()%range+1;
    110                          figure_3=rand()%range+1;
    111                          figure_4=rand()%range+1;
    112                          proper(figure_1,figure_2,result_1);
    113                          proper(figure_3,figure_4,result_2);
    114                          c=rand()%4;
    115                           switch(c)
    116                           {
    117                              case 0:
    118                                 cout<<figure_1;
    119                                 opeators();
    120                                 cout<<figure_2<<" ="<<endl;
    121                                  break;         
    122                              case 1:
    123                                 cout<<figure_1;
    124                                 opeators();
    125                                 cout<<figure_3<<"/"<<figure_4<<" ="<<endl;
    126                                   break;
    127                              case 2:
    128                                 cout<<figure_1<<"/"<<figure_2;
    129                                 opeators();
    130                                 cout<<figure_3<<" ="<<endl;
    131                                   break;
    132                              case 3://除数情况单独确定其余数
    133                                    for(;;)//无限循环,当出现满足的条件时跳出循环
    134                                    {
    135                                          figure_1=rand()%range+1;
    136                                          figure_2=rand()%range+1;         
    137                                      if((figure_2%figure_1)!=0)
    138                                      {
    139                                          break;
    140                                      }
    141                                    }
    142                                          cout<<figure_2<<" / "<<figure_1<<" ="<<endl;
    143                                          break;
    144                           }
    145                         }
    146                      }
    147                      else if(judgement=='n')//除法无余数
    148                      {
    149                           for( i=0;i<Number;i++)
    150                          {
    151                             figure_1=rand()%range+1;
    152                             figure_2=rand()%range+1;
    153                             figure_3=rand()%range+1;
    154                             figure_4=rand()%range+1;
    155                             proper(figure_1,figure_2,result_1);
    156                             proper(figure_3,figure_4,result_2);
    157                             c=rand()%4;                          
    158                           switch(c)
    159                           {
    160                              case 0:
    161                                 cout<<figure_1;
    162                                 opeators();
    163                                 cout<<figure_2<<" ="<<endl;
    164                                  break;
    165                                  
    166                              case 1:
    167                                 cout<<figure_1;
    168                                 opeators();
    169                                 cout<<figure_3<<"/"<<figure_4<<" ="<<endl;
    170                                   break;
    171                              case 2:
    172                                 cout<<figure_1<<"/"<<figure_2;
    173                                 opeators();
    174                                 cout<<figure_3<<" ="<<endl;
    175                                   break;
    176                              case 3:
    177                                    for(;;)
    178                                    {
    179                                          figure_1=rand()%range+1;
    180                                          figure_2=rand()%range+1;         
    181                                      if((figure_2%figure_1)==0)
    182                                      {
    183                                          break;
    184                                      }
    185                                    }
    186                                          cout<<figure_2<<" / "<<figure_1<<" ="<<endl;
    187                                          break;
    188                           }    
    189                           }
    190                      }
    191                 }
    192                 else if(judgement=='n')//只有加减
    193                 {
    194                     cout<<"减法是否有负数,y/n"<<endl;
    195                     cin>>judgement;
    196                     if(judgement=='y')//减法有负数
    197                      {
    198                          for( i=0;i<Number;i++)
    199                          {
    200                             figure_1=rand()%range+1;
    201                             figure_2=rand()%range+1;
    202                             figure_3=rand()%range+1;
    203                             figure_4=rand()%range+1;
    204                             proper(figure_1,figure_2,result_1);
    205                             proper(figure_3,figure_4,result_2);
    206                             c=rand()%2;
    207                             d=rand()%4;
    208                             switch(d)
    209                             {
    210                              case 0:
    211                                  if(c==0)
    212                                  {
    213                                      cout<<figure_1<<" + "<<figure_2<<" ="<<endl;break;
    214                                  }
    215                                 else
    216                                 {
    217                                     if(figure_1<figure_2)
    218                                     {
    219                                         cout<<figure_1<<"  - "<<figure_2<<" ="<<endl;
    220                                     }
    221                                     else
    222                                     {
    223                                         cout<<figure_2<<" - "<<figure_1<<" ="<<endl;
    224                                      }      
    225                                  }
    226                                  break;
    227                               case 1:
    228                                  if(c==0)
    229                                 {
    230                                     cout<<figure_1<<" + "<<figure_3<<"/"<<figure_4<<" "<<endl;
    231                                  }
    232                                   else
    233                                  {
    234                                     cout<<figure_3<<"/"<<figure_4<<" - "<<figure_1<<" ="<<endl;
    235                                  }
    236                                  break;
    237                              case 2:
    238                                  if(c==0)
    239                                  {
    240                                      cout<<figure_1<<"/"<<figure_2<<" + "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    241                                  }
    242                                 else
    243                                  {
    244                                     if(result_1<result_2)
    245                                     {
    246                                     cout <<figure_1<<"/"<<figure_2<<" - "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    247                                      }
    248                                     else
    249                                     { 
    250                                    cout<<figure_3<<"/"<<figure_4<<" - "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    251                                     }
    252                                  }
    253                                  break;
    254                             case 3 :
    255                                   cout<<figure_3<<"/"<<figure_4<<" + "<<figure_1<<" ="<<endl;
    256                                  break;
    257                         }
    258                          }
    259 
    260                      }
    261                      else if(judgement=='n')//没有负数
    262                      {
    263                         for( i=0;i<Number;i++)
    264                         {
    265                             figure_1=rand()%range+1;
    266                             figure_2=rand()%range+1;
    267                             figure_3=rand()%range+1;
    268                             figure_4=rand()%range+1;
    269                             proper(figure_1,figure_2,result_1);
    270                             proper(figure_3,figure_4,result_2);
    271                             c=rand()%2;
    272                             d=rand()%4;
    273                         switch(d)
    274                         {
    275                              case 0:
    276                                  if(c==0)
    277                                  {
    278                                      cout<<figure_1<<" + "<<figure_2<<" ="<<endl;break;
    279                                  }
    280                                 else
    281                                 {
    282                                     if(figure_1>figure_2)
    283                                     {
    284                                         cout<<figure_1<<"  - "<<figure_2<<" ="<<endl;
    285                                     }
    286                                     else
    287                                     {
    288                                         cout<<figure_2<<" - "<<figure_1<<" ="<<endl;
    289                                      }
    290               
    291                                  }
    292                                  break;
    293                               case 1:
    294                                  if(c==0)
    295                                 {
    296                                     cout<<figure_1<<" + "<<figure_3<<"/"<<figure_4<<" "<<endl;
    297                                  }
    298                                   else
    299                                  {
    300                                     cout<<figure_1<<" - "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    301                                  }
    302                                  break;
    303                              case 2:
    304                                  if(c==0)
    305                                  {
    306                                      cout<<figure_1<<"/"<<figure_2<<" + "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    307                                  }
    308                                 else
    309                                  {
    310                                     if(result_1>result_2)
    311                                     {
    312                                     cout <<figure_1<<"/"<<figure_2<<" - "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    313                                      }
    314                                     else
    315                                     { 
    316                                    cout<<figure_3<<"/"<<figure_4<<" - "<<figure_3<<"/"<<figure_4<<" ="<<endl;
    317                                     }
    318                                  }
    319                                  break;
    320                             case 3 :
    321                                   cout<<figure_3<<"/"<<figure_4<<" + "<<figure_1<<" ="<<endl;
    322                                  break;
    323  
    324                         }
    325                         }
    326                     }
    327                 }    
    328            }
    329 }

    五、截图

    六、感想:

    这次编程一周都在考虑这个问题,用时较长,最终还是完成了,虽然有些不足,但基本功能实现了,感觉挺有成就感,没有让努力付诸东流。

    项目计划日志(单位:h):

      听课 编写程序 阅读相关书籍 网上查找资料   日总计
    周一 2 0 1 0 3
    周二  0 1  1  0 2
    周三  0 1  0  0 1
    周四 2 3  0  0 5
    周五  0 5 2 1 8
    周六  0 5 0  0 5
    周日          
    周总计 4 14 4 1 24

    时间记录日志(单位:min):

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    星期一 14:00 15:50 10(课间) 100 听课 软件工程
      18:00 19:00 5 60 看书 构建之法
    星期二 19:30 20:30 0 60 编程 四则运算2的程序
    星期三 14:00  15:00 0  60 编程 四则运算2的程序
      19:00 20:00 0 60 编程
    星期四 14:00 15:50 10(课间) 100 听课 软件工程
      19:30 21:30 0 120 编程 四则运算2的程序
      21:30 22:30   60 看书 构建之法
    星期五 14:00 17:00 0 180 编程 四则运算2的程序
      18:30 21:30 30 150 编程 四则运算2的程序
    星期六 7:00 12:30 30 300 编程 四则运算2程序进行修改、写博客
      13:00 15:00   100 编程、写博客  
  • 相关阅读:
    为什么解析 array_column不可用,
    Android经常使用的布局类整理(一)
    C++ Coding Standard
    Kd-Tree算法原理和开源实现代码
    2013年10月5日国庆上班前一天
    2013年10月5日
    2013年10月3日合肥归来
    国庆第二天参加室友婚礼
    国庆随笔
    2013第40周日国庆放假前一天晚上
  • 原文地址:https://www.cnblogs.com/surver/p/5268763.html
Copyright © 2011-2022 走看看