四则运算2

一、设计思想

1、避免题目重复(从第二个开始,每生成一个题目,与前面所有的题目对比,不同则随机生成,相同则不产生)
2、可定制数量/打印方式(用户可通过设置题目数量n来实现定制数量,通过设置变量,用户选择来实现打印方式)
3、是否有乘除法(用户通过选择是或否实现)
     数值范围(通过设置随机数的范围实现)
     加减有无负数(通过判断减数与被减数的大小来实现,被减数比减数大则没负数,被减数比减数小则有负数)
     除法有无余数(判断被除数是否能除尽除数)
     打印中每行的间隔可调整(用户通过设置行数间隔实现)

二、源代码

#include<iostream>
#include<stdlib.h>
using namespace std;
#define  MAX 10000
#include <ctime>
#include <cstdlib>
void display()
{
     char q[4][2]={"+","-","*","/"};
     int a,b,k,m,n,o,p;
     cout<<"请输入定制数量"<<endl;
     cin>>k;//定制数量
     cout<<endl;
     cout<<"请输入数值范围(如 10 50)"<<endl;
     cin>>m>>n;
     cout<<endl;//数值范围
     cout<<"0.无乘除法"<<endl;
     cout<<"1.有乘除法"<<endl;
     cin>>o;//有无乘除 0 无 1有
     if(m<n)
     {
          int temp=n;
          n=m;
          m=temp;
     }
     if(o!=0)
     {
          cout<<endl;//数值范围
          cout<<"0.无余数"<<endl;
          cout<<"1.有余数"<<endl;
          cin>>p;//有无余数 0无 1有
     }
     int d[MAX][3];
     srand(time(0)); 
     for(int i=0;i<k;i++)
     {
          d[i][0]=rand()%(m-n)+n;
          d[i][1]=rand()%(m-n)+n;
          d[i][2]=rand()%(m-n)+n;
          a=rand()%4;
          b=rand()%4;
          if(o==1)
          {
              a=rand()%4;
              b=rand()%4;
      }
      else
      {
           a=rand()%2;
           b=rand()%2;
      }
       if(o==0)
      {
           cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
      }
      else if(p==0)
      {
            if(((d[i][0]%d[i][1]==0&&a==3)&&(d[i][1]%d[i][2]==0&&b==3))||(d[i][0]%d[i][1]==0&&a==3)||(d[i][1]%d[i][2]==0&&b==3))
            cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
        else
            i=i-1;
          }
          else
               cout<<"第"<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<q[b]<<d[i][2]<<"="<<endl;
  
     }
 
}
int main()
{
     display();
     return 0;
}

三、运行结果

四、运行截图

五、总结

在这次实验,我更加了解了有想法到程序的过程,也知道代码不进行模块化程序出问题。程序仅仅实现了几个功能还不太全面。刚开始的时候没有思路,后来具体到每一个问题其实也没有那么困难。

原文地址:https://www.cnblogs.com/yanyafeng/p/4340041.html