zoukankan      html  css  js  c++  java
  • 四则运算2

    设计思路

    一、题目避免重复

    把题目的两个运算数和运算符号保存到三个数组里,之后每次出题依次比较运算数和运算符号是否已经储存在数组里。如果三者都相同就重新出题,如果不相同就把数据储存在数组里,继续出题。

    二、可定制

    设置两个变量控制数量和打印方式,由用户输入。

    三、是否有乘除法

    加减乘除可以取4的余数来控制,不支持乘除法可以取2的余数来控制。

    四、数值范围

    通过控制随机数的生成范围来决定数值的取值范围。

    五、加减有无负数

    通过随机产生一个数n,用(-1)的n次方来控制是否为负数,负数打印要加上括号如:1+(-3)=或者3-(-1)=。

    六、除法有无余数

    随机数产生后验证可以整除再打印,否则重新生成随机数。

    七、是否支持分数

    生成4个随机数分别表示两个分子和两个分母。

    源程序代码

    #include <iostream>

    #include <cstdlib>

    #include <ctime>

    using namespace std;

     

    void main()

    {

         int a,b,c,d,e,f,g,i;

         char x,y;

         cout<<"请输入出题数量:"<<endl;

         cin>>d;

         cout<<"请输入数值范围:"<<endl;

         cin>>f>>g;

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

         cin>>x;

         cout<<"请输入是否有余数?(Y/N)"<<endl;

         cin>>y;

         if (x=='Y') e=4;

         if (x=='N') e=2;

         srand(unsigned(time(0)));

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

         {

             a=rand()%(g-f+1)+f;

             b=rand()%(g-f+1)+f;

             c=rand()%100;

             c=c%e;

             if (b>=0)

             {

                  if (c==0) cout<<i+1<<":"<<a<<"+"<<b<<"="<<endl;

                  if (c==1) cout<<i+1<<":"<<a<<"-"<<b<<"="<<endl;

                  if (c==2) cout<<i+1<<":"<<a<<"*"<<b<<"="<<endl;

                  if (c==3)

                  {

                       while(b==0)

                       {

                           b=rand()%(g-f+1)+f;

                       }

                       while(a%b!=0&&y=='N')

                       {

                           a=rand()%(g-f+1)+f;

                           b=rand()%(g-f+1)+f;

                       }

                       cout<<i+1<<":"<<a<<"/"<<b<<"="<<endl;

                  }

     

             }

             else

             {

                  if (c==0) cout<<i+1<<":"<<a<<"+("<<b<<")="<<endl;

                  if (c==1) cout<<i+1<<":"<<a<<"-("<<b<<")="<<endl;

                  if (c==2) cout<<i+1<<":"<<a<<"*("<<b<<")="<<endl;

                  if (c==3)

                  {

                       while(a%b!=0&&y=='N')

                       {

                           a=rand()%(g-f+1)+f;

                           b=rand()%(g-f+1)+f;

                       }

                       cout<<i+1<<":"<<a<<"/("<<b<<")="<<endl;

                  }

     

             }

     

         }

     

    }

    运行结果截图

    编程总结

    这个程序可以自定义出题数量,通过用户输入数字来控制。提示用户输入两个数来指定出题的数值范围,根据用户需要可以选择是否有乘除法,用户输入Y就包含乘除法,用户输入N就不含乘除法,保证除数不为零。根据用户指定的数值范围来控制是否产生负数,同时还优化了出现负数时的打印格式(添加小括号)。用户也可以控制除法有无余数,若要求无余数,当程序生成有余数的除法题会舍弃数据再生成一道题,看是否满足条件,若满足就打印出来,若不满足继续生成。

    时间记录日志

  • 相关阅读:
    linux-who
    Linux开机禁用开启防火墙
    linux环境vnc安装
    NFS配置及开机自动挂载
    yum list失败
    镜像文件挂载及本地yum搭建
    weblogic在64位windows的设置
    linux操作系统语言更改
    Linux磁盘空间扩容(LVM)
    Nginx 拒接服务漏洞(CVE-2016-0747)整改
  • 原文地址:https://www.cnblogs.com/BUANG/p/4350998.html
Copyright © 2011-2022 走看看