码迷,mamicode.com
首页 > 其他好文 > 详细

四则运算2

时间:2015-03-15 16:36:19      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

一,问题描述:

  要求:
    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()实现,又积累了一些编程知识,由于个人编程基础不足,所以部分功能没有实现,通过以后的学习还会回来慢慢改进该程序。

四则运算2

标签:

原文地址:http://www.cnblogs.com/cuipengbo/p/4339909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!