• 四则运算2详细过程


    一、设计思路

    1.题目避免重复:

    可以定义三个数组,第二道题的第一个数,第二个数,运算符不能与第一道题完全一样,第三道题不能与第二道题,第一道题一样,以此类推。

    2.可定制(数量/打印方式)

    数量可以从键盘输入,打印方式可以调整各题之间的间距或者直接换行。

    3.控制参数,由用户的意愿进行选择,先设置用户选择(0,1),程序用判断语句获得用户的意愿,添加进相应的题目。

    二、源代码

    #include<iostream.h>

    #include<stdlib.h>

    int a[100],b[100],c[100];

    int i;

    void Display(int f)    //输出题目

    {  

            if(f==0)  

           {   

                   if(c[i]==0)    

                          cout<<a[i]<<'+'<<b[i]<<'='<<endl;   

                   if(c[i]==1)    

                          cout<<a[i]<<'-'<<b[i]<<'='<<endl;   

                   if(c[i]==2)    

                          cout<<a[i]<<'*'<<b[i]<<'='<<endl;   

                   if(c[i]==3)    

                          cout<<a[i]<<'/'<<b[i]<<'='<<endl;  

            }  

           else  

           {   

                  if(c[i]==0)    

                         cout<<a[i]<<'+'<<b[i]<<'='<<' ';  

                  if(c[i]==1)    

                         cout<<a[i]<<'-'<<b[i]<<'='<<' ';   

                  if(c[i]==2)    

                         cout<<a[i]<<'*'<<b[i]<<'='<<' ';   

                  if(c[i]==3)    

                         cout<<a[i]<<'/'<<b[i]<<'='<<' ';   

                  if((i+1)%f==0)    

                         cout<<endl;  

             }

    }

    void Carry()       //执行全部过程,添加有出错处理

    {  

              int j,k,t;  

              int m,n,o,d,e,f;  

              cout<<"请选择是否有乘除法:(0为是,1为否)"<<endl;  

              cin>>m;

              if(m!=0&&m!=1)
              {
                      cout<<"输入错误,请重新输入!"<<endl;
                      Carry();

                      exit(0);
              }

              cout<<"请输入取值范围:(0-?)"<<endl;  

              cin>>n;  

              cout<<"请选择加减有无负数:(0为有,1为无)"<<endl;

              cin>>o;  

              if(o!=0&&o!=1)
              {
                      cout<<"输入错误,请重新输入!"<<endl;
                      Carry();

                      exit(0);
              }

              if(m==0)  

              {   

                     cout<<"请选择除法有无余数:(0为有,1为无)"<<endl;   

                     cin>>d;  

                     if(d!=0&&d!=1)
                     {
                           cout<<"输入错误,请重新输入!"<<endl;
                           Carry();

                           exit(0);
                     }

              }  

              cout<<"请输入题目个数:"<<endl;  

              cin>>e;  

              if(e<=0)
              {
                      cout<<"输入错误,请重新输入!"<<endl;
                      Carry();

                      exit(0);
              }

              cout<<"请选择打印方式:(0为逐行打印,输入其他数字则为该行几道题)"<<endl;  

              cin>>f;  

              if(f<0)
              {
                      cout<<"输入错误,请重新输入!"<<endl;
                      Carry();

                      exit(0);
              }

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

              {   

                     a[i]=rand()%n;   

                     b[i]=rand()%n;   

                     c[i]=rand()%4;

                     if(c[i]==3&&b[i]==0)//除数不能为0

                     {

                              b[i]++;

                     } 

                     for(j=0;j<i;j++)       //判断题目是否重复,若重复则a[i]++

                              if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])     

                                         a[i]++;   

                    if(m==0&&o==0&&d==0)   

                    {    

                            Display(f);   

                    }   

                    else if(m==1)    //没有乘除法

                    {   

                            if(c[i]>=2)     

                            c[i]=c[i]-2;    

                            Display(f);   

                     }   

                     else if(m==0&&o==1&&d==0)   //无负数,且被除数大于除数

                     {    

                             if(a[i]<b[i])    

                            {    

                                    t=a[i];     

                                    a[i]=b[i];    

                                    b[i]=t;    

                            }    

                             Display(f);   

                    }   

                    else  

                   {    

                            if(c[i]==3)    

                            {     

                                     if(a[i]<b[i])     

                                     {      

                                             t=a[i];     

                                             a[i]=b[i];      

                                             b[i]=t;     

                                    }     

                                    while(a[i]%b[i]!=0)     //无余数

                                            b[i]++;    

                              }   

                              Display(f);   

                     }  

              }  

    }  

    void main()

    {

              Carry();

    }

    三、运行结果

    四、错误原因

          1.刚开始未能把三个数组以及变量i定义为全局变量,导致在Display函数中,无法把主函数中的值传到其他函数中;

          2.功能是一点一点添加进去的,刚开始忘了把打印方式功能添加进去了,后来想起来又添加的;

          3.除法没有余数,必然被除数要大于或等于除数,为了减少工作量,没有涉及既有负数又没有余数的题目。

    五、备注     

          3月13日下午,进行了一下程序的修改,添加了错误处理机制,使得程序更加完善。

  • 相关阅读:
    TWaver中文社区 » 关于
    RedMon Redirection Port Monitor
    dust good
    HiSpider(Hitask) is a fast and high performance spider with high speed
    42qu.com 找到给你答案的人
    yet another 牛人
    Simple Map Reduce at home
    China (googlegroups) [CPyUG:78205] 基于Python的MapReduce算法的快速构建框架
    retools 0.1 : Python Package Index
    Bloomfilter 的应用场景 黄刚的专栏 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/benboerba/p/4329157.html
Copyright © 2020-2023  润新知