四则运算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就不含乘除法,保证除数不为零。根据用户指定的数值范围来控制是否产生负数,同时还优化了出现负数时的打印格式(添加小括号)。用户也可以控制除法有无余数,若要求无余数,当程序生成有余数的除法题会舍弃数据再生成一道题,看是否满足条件,若满足就打印出来,若不满足继续生成。

时间记录日志

原文地址:https://www.cnblogs.com/BUANG/p/4350998.html