四则运算2

一,问题描述:

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

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

二,设计思路

1,题目避免重复:

采用srand(time(NULL))实现

2,可定制:

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

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

3,可控制参数:

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

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

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

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

三,缺陷及问题

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

四、源程序

#include<iostream>

 #include<stdlib.h>

using namespace std;

#include<time.h>

 

char get_oper(int n)

{

      switch(n)

      {

      case 0:return '+';

      case 1:return '-';

      case 2:return '*';

      case 3:return '/';

      }

}

 

int main()

{

      srand(time(NULL));

      int num1=0;

      int num2=0;

      int operators=0;

      int cpl;          //定义每行输出题目个数

      int range;           //定义数值范围

      int answer;        //定义计算结果

      int num;        //定义题目个数

      int JG;                //定义每行间隔

      char m;              //是否有乘除法

      char n;               //加减有无负数

      cout<<"请输入输出题目个数:";

      cin>>num;

      cout<<"请输入数值范围:";

      cin>>range;

      cout<<"请输入每行题目个数:";

      cin>>cpl;

      cout<<"请输入每行间隔:";

      cin>>JG;

      cout<<"是否有乘除法(Y/N?";

      cin>>m;

      cout<<"是否有负数(Y/N?";

      cin>>n;

      for(int i=1;i<=num;i++)

      {

                                        //随机产生运算的数和运算符。

           num1=rand()%range;

           num2=rand()%range;

           if(m=='Y')

           {

                 operators=rand()%4;

                 switch(operators)

                 {

                      case 0:answer=num1+num2;break;

                      case 1:answer=num1-num2;break;

                      case 2:answer=num1*num2;break;

                      case 3:answer=num1/num2;

                 }

           }

           else if(m=='N')

           {

                 operators=rand()%2;

                 switch(operators)

                 {

                      case 0:answer=num1+num2;break;

                      case 1:answer=num1-num2;break;

                 }

           }

           if(answer<range)

           {         

                 if(n=='Y')

                 {

                      cout<<num1<<get_oper(operators)<<num2<<"=";

                      for(int j=0;j<=JG;j++)

                            cout<<" ";

                            cout<<"\t";

                      if(i%cpl==0)

                      {

                      cout<<endl;

                      }

                 }

                 else if(n=='N')

                 {

                      i--;

                 }

           }

           else

           {

                 i--;

           }   

      }

      return 0;

}

五、调试截图

六、实验感想

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

转载于:https://www.cnblogs.com/cuipengbo/p/4339909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值