zoukankan      html  css  js  c++  java
  • 小学二年级题目的改进

    以下程序满足的条件:

         

      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  ;

    }

    截图:

     

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

  • 相关阅读:
    UEditor使用报错Cannot set property 'innerHTML' of undefined
    freemarker如何在url中传递中文参数
    freemarker字符串转换成日期和时间
    freemarker 类型转换
    内存分析工具 MAT 的使用
    Ubuntu13.04下Eclipse中文乱码解决
    自定义上下文对话框
    格局中@null的代码实现方式
    Android xml资源文件中@、@android:type、@*、?、@+含义和区别
    探讨:你真的会用Android的Dialog吗?
  • 原文地址:https://www.cnblogs.com/TSbj/p/4339736.html
Copyright © 2011-2022 走看看