zoukankan      html  css  js  c++  java
  • “四则运算2”分析报告

    “四则运算2”分析报告

    一、设计思路

     

    初步设计思路:

    1. 题目不重复先使用srand函数,生成两个做运算的随机数,再生成一个随机数,控制运算符号。

    2. 是否有乘除法,数值范围,负数,余数,分数可以让用户选择。根据用户选择的结果,在每个函数之前根据用户的选择来执行不同的代码。

    3. 把生成的每一个新的算式放在一起,每生成一个新的算式要验证是否与之前生成的算式重复,用字符串比如来做,如果重复就重新生成一个新的算式。

    4. 打印只要用两个用户输入的变量就可以控制,一个控制打印的张数,一个控制打印每个式子的间距。

    修改后设计思路:(修改了第2、3条)

    1. 题目不重复先使用srand函数,生成两个做运算的随机数,再生成一个随机数,控制运算符号。

    2. 是否有乘除法,数值范围,负数,余数,分数可以让用户选择。根据用户选择的结果,调用随机数生成函数,生成符合要求的随机数。

    3. 为了避免算式重复,我定义了两个整型数组,一个字符数组。两个整型数组分别用来依次存放两个随机生成的数(a,b),字符数组用来依次存放每个式子的运算符号(+、-、*、/),每次输出生成算式的结果时,调用函数,验证当次生成的a,b两个随机数和符号是否完全一样,如果完全一样,则此次结果不保存在数组中,也不输出,在主函数中和for循环中加一次循环,新生成一个式子。

    4. 打印只要用两个用户输入的变量就可以控制,一个控制打印的张数,一个控制打印每个式子的间距。

    二、源程序代码

    #include<iostream>

    #include<time.h>

    #include<string>

    #define n 5

    using namespace std;

    void display(int a,int b,char z,int &i,int d[],int e[],char f[])    //验证算式是否重复,输出函数

    {

          int j,K=1;

          for(j=0;j<i;j++)  

          if(a==d[j] && b==e[j] && z==f[j])   

               K=0;

          if(K!=0)

          {  

               d[i]=a;  

               e[i]=b;  

               f[i]=z;  

               if(b<0)   

                    cout<<a<<z<<"("<<b<<")="<<endl;   

               else    

                    cout<<a<<z<<b<<"="<<endl;

           }  

          else   

              i=i-1;

    }

    void suiji(int &a,int &b,int &c,string s1,string s2,string s3)      //s1 数值范围  s2 乘除法 s3 负数

    {  

         if(s1=="Y")  

         {   

               a=rand()%50;  

               b=rand()%50;  

         }  

         else  

         {   

              a=rand();  

              b=rand();  

          }

          if(s2=="Y")  

               c=rand()%4;  

          else  

               c=rand()%2;

          if(s3=="Y")

          {   

                 if(s1=="Y")

                 { 

                     a=-rand()%76+25;   

                     b=-rand()%76+25;  

                }   

                else   

               {    

                    a=rand()-rand();    

                    b=rand()-rand();  

                }

          }

    }

    void main()                       //主程序

    {

          int a,b,c,i;
           char z;
          int d[n];
          int e[n];
          char f[n];
          string s1,s2,s3,s4;

         srand((int)time(0));

          cout<<"---------------------------四则运算出题小程序-------------------------"<<endl;  cout<<endl;

           cout<<"是否有负数?(Y or N)"<<endl;

           cin>>s3;

          cout<<"是否有乘除法?(Y or N)"<<endl;  

          cin>>s2;

          cout<<"是否有数值范围?(Y or N)"<<endl;

          cin>>s1;

          cout<<"乘除法是否有余数?(Y or N)"<<endl;  

          cin>>s4;

          for(i=0;i<n;i++)

          {   

               suiji(a,b,c,s1,s2,s3);

               if(c==0)                                                         //加法

              {    

                    z='+';   

                    if(b<0)    

                         display(a,b,z,i,d,e,f);    

                    else     

                        display(a,b,z,i,d,e,f);  

                }

                if(c==1)                                                          //减法

                {   

                       z='-';

                       if(b<0)     

                           display(a,b,z,i,d,e,f);   

                       else    

                           display(a,b,z,i,d,e,f);

                  }

                  if(c==2)                                                          //乘法

                  {   

                         z='*';    

                         display(a,b,z,i,d,e,f);

                  }

                 if(c==3)

                 {

                            z='/';

                            if(s4=="Y")  

                                    display(a,b,z,i,d,e,f);

                            else

                           { 

                                   int k;   

                                   k=a%b;     

                                   while(k!=0)

                                   {

                                            suiji(a,b,c,s1,s2,s3);     

                                            k=a%b;     

                                    }

                                   display(a,b,z,i,d,e,f);

                               }

                    }

             }  //for循环

             int x;

              cout<<"请输入打印张数:"<<endl;

              cin>>x;

              cout<<"已成功提交!"<<endl;

    }

    三、运行结果截图

    四、编程总结

        这次的四则运算2其实算是对上一次四则运算1延伸,大体框架就是1,在加一些功能进去,就是2。

        编完这个程序我发现,在编程序之前,一定要先有设计思路,在纸上要先写写画画,把大致的过程写出来,之后才能到电脑上编,如果直接上去就编,编着编着就乱套了,就不知道哪是哪了。

        程序中的每一个功能,都可以用很多方法去实现,虽然结果都是一样的,但是在思维方面和借助的东西上就完全不一样,我觉得找对方法这一点就直接决定了程序的效率问题。所以在以后的学习中,一定要尽量找到最简便最有效率的方法去解决编程中出现的问题,避免不必要的麻烦。

        以后我是想试着把这个做成一个小程序,比如手机app之类的东西,先多看一些书,然后慢慢来试试看吧。

    五、时间记录日志

  • 相关阅读:
    Linux学习-网络管理
    Linux学习-文件权限
    Linux学习-用户管理常用命令
    python操作数据库(MySQL、redis、MD5加密函数)
    Jenkins待过的坑
    Robot framework+Jenkins
    jenkins + maven + SVN自动化集成部署
    接口测试学习笔记二
    接口测试学习笔记一
    【数据结构】为什么要使用一致性哈希算法?
  • 原文地址:https://www.cnblogs.com/meimiaozi/p/4348975.html
Copyright © 2011-2022 走看看