• 四则运算加强版


    设计思路

    控制重复:建立三个数组分别控制两个随机数和通过随机数产生的四则运算符号,通过循环使三个数组同时与前面的比较,出现重复时使循环的数减一来控制总数不变。

    可定制(数量/打印方式):运用循环控制数量,输出时添加变量控制打印方式。

    可控下列参数(是否有乘除法、数值范围,加减有无负数、除法有无余数、是否支持分数):输出前判断所控条件,添加条件判断乘除法、加减有无负数、除法有无余数、支持分数运算,在添加随机数时控制数值范围,最后根据所判断的条件分别打印出所处题目。

    代码:

    #include<iostream>
    #include<cmath>
    using namespace std;

    void main()
    {
     int a[1000],b[1000],c[1000];
     double r;
     int p,q,i,j,k,m,n,l,s,g;
     cout<<"输入题目数量: ";
     cin>>n;
     cout<<"输入最大范围:";
     cin>>k;
     cout<<"是否有乘除法(有输入1,没有输入0)";
     cin>>m;
     cout<<"是否有负数(有输入1,没有输入0)";
     cin>>q;
     if(q==1) r=-1.0;
     if(q==0) r=1.0;
     cout<<"是否有余数(有输入1,没有输入0)";
     cin>>s;
     cout<<"确定打印方式(几个题为一组)";
     cin>>g;
     if(g>n)
     {
      g=n;
     }
     for(i=0;i<n;i++)
     {
      l=rand()%2+1;//控制负数
            const int q=pow(r,l);
      a[i]=q*rand()%k+1;
         b[i]=q*rand()%k+1;
      c[i]=rand()%4+1;
      for(j=0;j<i;j++)//判断重复
      {
       if(a[i]==a[j]&&b[i]==b[j]&&c[i]==c[j])
        i=i-1;
      }
      if(c[i]==4&&b[i]==0) i=i-1;//除数不为0
      if(s==0&&a[i]%b[i]!=0)i=i-1;//判断余数
      if(s==1) i=i;
      
          
     }
     if(m==1)//判断乘除法
     {
      for(i=0;i<n/g+1;i++)
      {
       for(j=0;j<g;j++){
       if(c[i*g+j]==1)
        cout<<a[i*g+j]<<"+"<<b[i*g+j]<<"="<<endl;   
       if(c[i*g+j]==2)
        cout<<a[i*g+j]<<"-"<<b[i*g+j]<<"="<<endl;
       if(c[i*g+j]==3)
        cout<<a[i*g+j]<<"*"<<b[i*g+j]<<"="<<endl;
       if(c[i*g+j]==4)
        cout<<a[i*g+j]<<"/"<<b[i*g+j]<<"="<<endl;
       }
       cout<<endl;
      }
     }
     if(m==0)
     {
      for(i=0;i<n/g+1;i++)
      {
       for(j=0;j<g;j++){
        if(i*g+j>=n) break;
       p=rand()%2+1;
      if(p==1)
       cout<<a[i*g+j]<<"+"<<b[i*g+j]<<"="<<endl;   
      if(p==2)
       cout<<a[i*g+j]<<"-"<<b[i*g+j]<<"="<<endl;
       }
       cout<<endl;
      }
     }
    }

    截图:

    编程总结:

    四则运算看似简单的问题再添加这么多条件后也是同样也是有些小难度的,在通过这些天的努力基本编写出基本满足条件的小程序,在编程过程中一点一点的解决问题,开始的处理重复问题是出现了一点问题,在编程前的处理思路有一定的问题那样编程会变得麻烦,后改变了方法解决了问题使程序变得相对简洁,在修改过程中也慢慢的提高了编程能力。通过这次的修改四则运算让我知道了看似简单的问题同样也能扩展到软件的层次,初步了解了软件。

    时间记录日志:

    日起 开始时间 结束时间 中断时间 净时间/min 活动 备注
    3.13 12:10 12:40   30 设计思路 整理课上思路
      20:00 21:00 10 50 编程 出现判断重复问题
    3.14 9:00 11:00 20 100 编程 修改判断重复思路,初步编写解决判断是否有乘除,题目数量
    3.15 2:00 4:00 20 100 编程 解决负数问题,余数问题,添加数值范围
      7:00 21:00 50 70 编程 修改下午未解决问题(查资料,与同学讨论)
    3.16 10:00 11:30   90 编程 解决输出打印问题
    3.18 19:00 20:00   60 写实验报告 书写实验报告,发表博客
                 
                 
  • 相关阅读:
    99年人民币冠号大全
    9910的5种水印冠号发行量分布图
    儿童、青少年长身高的注意事项
    钱币评级流程与方法
    99版人民币收藏价值分析
    四、五版币冠字号发行量统计排行
    如何收藏第四套人民币大全套
    第四套荧光钞大全介绍
    小程序加载中提示实现
    微信小程序navigateBack如何带参数
  • 原文地址:https://www.cnblogs.com/lingxi/p/4348475.html
Copyright © 2020-2023  润新知