小学二年级题目的改进

以下程序满足的条件:

     

  1.避免重复

      随机算取一组随机数,将第二道题和第一道题操作数进行对比,如果发现两个操作数都完全一样话,就删除此组随机数,重新进行对边,直至最后没有重复的数组。

  2.可定制

      可控制每行打印题目的个数,以及所有算术题的个数从而控制打印格式

  3.是否有乘除法

     题目随机出现后,将所有运算符号送入一个数组,然后进行检索,查询是否有乘除号

  4.数值范围

     随机数的取值范围在0-99之间,这样结果就不会超过200。

  5.有无括号

      当有乘除法的时候有括号,无乘除法的话,就没有括号

  6.打印中的每行建间隔可以调整

     可以根据需要调整。

源代码:

#include<iostream.h>

#include<stdlib.h>

#include<time.h>

void main()

{

      int a,i,k,m,q,j,h,v; //定义几个变量

      int *o1,*o2,*o3;     //3个数组指针       

      char *oc1,*oc2;      //两个运算符指针

      char n1,n2;          //n1有无乘除  n2有无括号

      int a1,a2;

      char g[4]={'+','-','*','/'};

      srand((unsigned)time(NULL)); //本地时间

b:   cout<<"请问您想输出多少道题目?"<<endl;

      cin>>q;

      cout<<"请输入操作数值的最大范围:"<<endl;

      cin>>j;

      cout<<"请问是否有无乘除法?(Y/N)"<<endl;

      cin>>n1;

      cout<<"请问是否有无括号?(Y/N)"<<endl;

      cin>>n2;

    cout<<"请输入每行运算式的个数:"<<endl;

    cin>>v;

      cout<<"请输入每行运算式之间的间隔:"<<endl;

      cin>>a2;

      o1=new int[q];           //动态生成数组

      o2=new int[q];

      o3=new int[q];

      oc1=new char[q];

      oc2=new char[q];

      cout<<"以下为随机选取的题目:"<<endl;

      for(i=1;i<=q;i++)          //定义一个可以改变题目数量的q

      {

           if(n1=='Y')

           {

                

                 oc1[i]=g[rand()%4];     //获取运算符

                 oc2[i]=g[rand()%4];

                 o1[i]=rand()%j;         //获取随机数

                 o2[i]=rand()%j;

                 o3[i]=rand()%j;

                 if(i==1)  

                 {

                      if(n2=='N')

                      {

                            cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                      }

                      else

                      {

                            if(rand()%2==0)                //判断括号的位置

                            {

                                  if(oc1[i]=='+'||oc1[i]=='-')  //括号在前

                                  {

                                       if(oc2[i]=='*'||oc2[i]=='/')

                                       {

                                             cout<<'('<<o1[i]<<oc1[i]<<o2[i]<<')'<<oc2[i]<<o3[i]<<"=    ";

                                       }

                                       else

                                       {

                                             cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                       }

                                  }

                                  if(oc1[i]=='*'||oc1[i]=='/')

                                  {

                                       cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                  }

                            }

                            else

                            {

                                  if(oc1[i]=='+'||oc1[i]=='-')  //括号在后

                                  {

                                       cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                  }

                                  if(oc1[i]=='*'||oc1[i]=='/')

                                  {

                                       if(oc2[i]=='+'||oc2[i]=='-')

                                       {

                                             cout<<o1[i]<<oc1[i]<<'('<<o2[i]<<oc2[i]<<o3[i]<<')'<<"=    ";

                                       }

                                       else

                                       {

                                             cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                       }

                                  }

                            }

                      }

                 }

                 else

                 {

                      for (k = 0; k < i; k++)                        //避免重复start

                      {

                            if (o1[k] == o1[i] && o2[k] == o2[i] && o3[k] == o3[i] && oc1[k] == oc1[i] && oc2[k] == oc2[i])

                            {

                                  i--;

                                  break;

                            }

                            else

                            {

                                  if (k == i - 1)  //比较到最后一个数时

                                  {

                                       //循环输出/*q*/道运算题

                                       if(n2=='N')

                                       {

                                             cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                       }

                                       else

                                       {

                                             if(rand()%2==0)                //判断括号的位置

                                             {

                                                  if(oc1[i]=='+'||oc1[i]=='-')  //括号在前

                                                  {

                                                        cout<<'('<<o1[i]<<oc1[i]<<o2[i]<<')'<<oc2[i]<<o3[i]<<"=    ";

                                                  }

                                                  if(oc1[i]=='*'||oc1[i]=='/')

                                                  {

                                                        cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                                  }

                                             }

                                             else

                                             {

                                                  if(oc1[i]=='+'||oc1[i]=='-')  //括号在后

                                                  {

                                                        cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                                  }

                                                  if(oc1[i]=='*'||oc1[i]=='/')

                                                  {

                                                        if(oc2[i]=='+'||oc2[i]=='-')

                                                        {

                                                              cout<<o1[i]<<oc1[i]<<'('<<o2[i]<<oc2[i]<<o3[i]<<')'<<"=    ";

                                                        }

                                                        else

                                                        {

                                                              cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                                        }

                                                  }

                                             }

                                       }

                                  }   

                            }

                      }                                              //避免重复end

                 }

           }

           else if(n1=='N')

           {

                 oc1[i]=g[rand()%2];

                 oc2[i]=g[rand()%2];

                 o1[i]=rand()%j;

                 o2[i]=rand()%j;

                 o3[i]=rand()%j;

                 if(i==1)

                 {

                      cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                 }

                 else

                 {

                      for (k = 0; k < i; k++)                                  //避免重复start

                      {

                            if (o1[k] == o1[i] && o2[k] == o2[i] && o3[k] == o3[i] && oc1[k] == oc1[i] && oc2[k] == oc2[i])

                            {

                                  i--;

                                  break;

                            }

                            else

                            {

                                  if (k == i - 1)  //比较到最后一个数时

                                  {

                                       //循环输出/*q*/道运算题

                                       cout<<o1[i]<<oc1[i]<<o2[i]<<oc2[i]<<o3[i]<<"=    ";

                                  }   

                            }

                      }                                                         //避免  重复end

                 }

           }

           if (i%v==0)

           {

                 cout<<endl ;

                 for(a1=1;a1<=a2;a1++)

                 {

                      cout<<endl;

                 }

           }

          

          

      }

      cout<<endl;

      cout<<endl;

      cout<<"请重新测试:"<<endl ;

      goto b  ;

}

截图:

 

   程序感悟:大的程序不好写但是可以按照需求一步一步来,积少成多也许就会更容易一点,同时还因为以前的基础不牢靠,导致很多小的问题还是需要请教别人,以后一定会多努力!!

原文地址:https://www.cnblogs.com/TSbj/p/4339736.html