四则运算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;
}
五,截图
四则运算2_第1张图片 四则运算2_第2张图片
 
  

六,实验总结

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

 

 

 

 

你可能感兴趣的:(四则运算2)