四则运算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 编程、写博客  
原文地址:https://www.cnblogs.com/surver/p/5268763.html