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

    日期任务 听课 编写程序 阅读相关书籍 网上查找资料 日总结
    周一 2 1 1 1 5
    周二          
    周三   1     1
    周四 2 2 2 1 7
    周五   4     4
    周六   2 1 3 6
    周日          
    周总结 4 10 4 5 23

    时间记录日志

    日期 开始时间 结束时间 活动 备注
    3/7 14:00 15:50 上课 软件工程
    3/9 6:00 7:00 阅读构建之法 仔细研读
    3/10 14:00 21:00 上课查阅资料编写程序 学习编程四则运算
    3/11 6:00 10:00 网上查询资料 自主编程 逐步完成作业作业
    3/12 12:00 6:00 网上查询 自主编程 上传博客 完成作业

     缺陷日志:完成过程中由于水平有限,语法出现问题比较多,大部分代码都有改写,由于马虎造成的问题倒是不多但还是存在以后会慢慢改进。

    一,问题描述:

      要求:
        1、题目避免重复
        2、可定制(数量/打印方式)
        3、可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数假分数),

             是否支持小数(精确到多少位),打印中每行的间隔。

    二,设计思路

    1,题目避免重复:

    采用srand(time(NULL))实现

    2,可定制:

    a)定制数量:定义变量n,用户可以自己设置

    b)打印方式:可以自己选择每行可以打印几个

    3,可控制参数:

    a)是否支持乘除:编写了两个函数,一个有乘除,一个没有乘除,在主函数里设置判断语句用户自己选择,然后调用相应的函数。

    b)加减有无负数:设置判断语句,有负数为0,无负数为1.

    c)除法有无余数:在有乘除的函数里设置条件语句,0为有余数,1为无余数,如果用户选择与随机产生的不一致,则再随机取一个被除数。

    d)打印中每行的间隔:只要再换行时用一个循环语句,循环输出endl即可

    三,缺陷及问题

    由于能力有限是否有括号,是否支持分数,是否支持小数等功能没有实现

    四,代码部分

    #include<iostream.h>
       #include<stdlib.h>
       #include<time.h>
       void zccc()
       {
              
          int a,b,c; //两位操作数和一位操作符  
          int e;
          srand(time(NULL));
          int n;//输出题目数目
       int x;//取值范围
          int f;//加减有无负数
          int l;//用来输入行间距
       int y;//除法有无余数
       cout<<"需要列出多少道数学题?"<<endl;
          cin>>n;
       cout<<"请规定数值取值范围"<<endl;
       cin>>x;
          cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
          cin>>f;
       cout<<"除法有无余数?(0代表有余数,1代表无余数)"<<endl;
          cin>>y;
       cout<<"每行需要打印几个算数题?"<<endl;
          cin>>e;
          cout<<"打印时行间距是多少?"<<endl;
          cin>>l;
          
          cout<<"********************************"<<endl;
          for(int i=0;i<n;i++)
          {
              a=rand()%x;
              b=rand()%x;
              c=rand()%4;
              if(c==0)
                  cout<<a<<"+"<<b<<"="<<"     ";
        if(c==1){
                  if(f==1)
                  {
                  if(a<b)
                  cout<<b<<"-"<<a<<"="<<"     ";
         else
         {
          cout<<a<<"-"<<b<<"="<<"     ";
         }
         }
                 
                  else if(f==0)
                  {
                  cout<<a<<"-"<<b<<"="<<"     ";
                  }
        }
              if(c==2)
                  cout<<a<<"*"<<b<<"="<<"     ";
                 
        if(c==3){
                  if(b!=0)
                  {
          while((y==1)&&(a%b)!=0)
          {
         a=rand()%100;
          }
    
     
    
                  cout<<a<<"/"<<b<<"="<<"     ";
                  }
                  else
                  {
                      i=i-1;
                  }
        }
                 
              if((i+1)%e==0)
              {
                  for(int d=0;d<=l;d++)
                  {
                      cout<<endl;
                  }
              }
              if((i+1)==n)
              {
                  cout<<endl;
              }
          }
      }
     
      void bzccc()
      {
             
          int e;//输入每行算数题的个数
          int a,b,c;   //两位操作数和一位操作符
          srand(time(NULL));
          int n;//输出题目数目
       int x;//取值范围
          int f;//加减有无负数
          int l;//用来输入行间距
          cout<<"需要列出多少道数学题"<<endl;
          cin>>n;
          cout<<"请规定数值取值范围"<<endl;
       cin>>x;
          cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
          cin>>f;
          cout<<"每行需要打印几个算数题?"<<endl;
        cin>>e;
         cout<<"打印时行间距是多少?"<<endl;
         cin>>l;
         cout<<"********************************"<<endl;
         for(int i=0;i<n;i++)
         {
             a=rand()%x;
             b=rand()%x;
            c=rand()%2;
           if(c==0)
                 cout<<"、 "<<a<<"+"<<b<<"="<<"     ";
                   if(c==1){
                 if(f==1)
                 {
                 if(a<b)
                 cout<<b<<"-"<<a<<"="<<"     ";
        else {
         cout<<a<<"-"<<b<<"="<<"     ";
        }
        }
         else if(f==0)
                 {
                     cout<<a<<"-"<<b<<"="<<"     ";
                 }
        }
                
             if((i+1)%e==0)
             {
                 for(int d=0;d<=l;d++)
                {           
                     cout<<endl;
                 }
             }
             if((i+1)==n)
             {
                 cout<<endl;
             }
         }
     }
    
     
    
    
     int main()
     {
    
     
    
         char ch;
         cout<<"是否支持乘除?(Y/N)"<<endl;
         cin>>ch;
         if(ch=='Y'||ch=='y')
         {
             zccc();   
             cout<<"********************************"<<endl;
         }
        
         else if(ch=='N'||ch=='n')
         {
             bzccc();
            cout<<"********************************"<<endl;
         }    
         return 0;
    }
    五,截图
    
    

    六,实验总结

    通过本次实验又学到了一些对于我来说新的知识,比如srand(time(NULL)),避免重复最开始想到的是最笨的思路,但是思路越简单实现就 越难,自己没办法实现,后来了解到可以用srand()实现,又积累了一些编程知识,由于个人编程基础不足,所以部分功能没有实现,通过以后的学习还会回 来慢慢改进该程序。

  • 相关阅读:
    学习UML类图
    【转】监听器(Listener)学习
    【转】ContextLoaderListener和DispatcherServlet加载内容的区别
    个人B站+微信公众号
    如何直观形象地树状打印一棵二叉树?
    轻松手撕10大排序算法
    简单易懂的快速幂取模算法
    程序员必学:快速幂算法
    为什么Swift和Python要抛弃++--?
    JetBrains系列IDE的配色方案(IDEACLionPyCharm)
  • 原文地址:https://www.cnblogs.com/liuwei8882/p/5268564.html
Copyright © 2011-2022 走看看