四则运算2完整版

一、题目要求:

1、题目避免重复;

2、可定制(数量/打印方式);

3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、

否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

二、设计思想

1、题目避免重复

(1)调用随机函数发生器,将生成的运算式用数组存储,将新的运算式与已生成式子做比较,若相同则不输出,不同则输出

2、可定制(数量/打印方式)

(1)提示用户输入题目数量,打印方式,从键盘输入

3、(1)是否有乘除法

在输入之前提示用户是否有乘除法,若没有,则只输出加减法

(2)是否有括号

(3)数值范围

由用户设置数值范围,如果输入不合法,提示输入错误,请重新输入,在随机生成数中保证随机数在用户设置的数值范围

(4)加减有无负数

如果没有负数,比较生成的两个数,保证做减法时被减数不小于减数

(5)乘除有无余数

首先判断除数是否为零,若为零则终止,若不为零则继续。对做除法的两个操作数做取余运算,若为零则没有余数

三、原程序代码

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 void display(int number,int l,int mul,int num,int neg,int remainder)//打印方式控制输出列数
  5 {
  6     int a[1000],b[1000],c[1000];
  7     int m;//控制题目避免重复
  8     int t;//中间变量
  9     for(int i=0;i<number;i++)//随机两个生成运算操作数
 10     {
 11         m=1;//初始化
 12         a[i]=rand()%num;
 13         b[i]=rand()%num;
 14         if(mul==0)//没有乘除法
 15         {
 16             c[i]=rand()%2;//随机生成0-1的数字,分别表示加减
 17         }
 18         if(mul==1)//有乘除法
 19         {
 20             c[i]=rand()%4;//随机生成0-3的数字,分别表示加减乘除
 21         }
 22         for(int j=0;j<i;j++)
 23         {
 24             if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])//比较新生成的操作数与原来的是否相同
 25             {
 26                 i=i-1;
 27                 m=0;
 28             }
 29         }
 30         while(m)//若不同则输出
 31         {
 32             switch(c[i])
 33             {
 34             case 0:
 35                 cout<<a[i]<<"+"<<b[i]<<"=";break;
 36             case 1:
 37                 if(neg==0)//减法没有负数
 38                 {
 39                     if(a[i]<b[i])
 40                     {
 41                         t=a[i];
 42                         a[i]=b[i];
 43                         b[i]=t;
 44                     }
 45                     cout<<a[i]<<"-"<<b[i]<<"=";break;
 46                 }
 47                 else
 48                 {
 49                     cout<<a[i]<<"-"<<b[i]<<"=";break;
 50                 }
 51             case 2:
 52                 cout<<a[i]<<"*"<<b[i]<<"=";break;
 53             case 3:
 54                 if(b[i]==0)//分母为零则不计入总数
 55                 {
 56                     i=i-1;break;
 57                 }
 58                 else if(remainder==0)//除法没有余数
 59                 {
 60                     if(a[i]%b[i]==0)
 61                     {
 62                         cout<<a[i]<<"/"<<b[i]<<"=";break;
 63                     }
 64                     else
 65                     {
 66                         i=i-1;break;
 67                     }
 68                 }
 69                 else if(remainder==1)//除法有余数
 70                 {
 71                     if(a[i]%b[i]!=0)
 72                     {
 73                         cout<<a[i]<<"/"<<b[i]<<"=";break;
 74                     }
 75                     else
 76                     {
 77                         i=i-1;break;
 78                     }
 79                 }
 80             }
 81             if((i+1)%l==0)
 82             {
 83                 cout<<endl;
 84             }
 85             else
 86             {
 87                 cout<<"\t"<<"\t";
 88             }
 89             break;//跳出循环
 90         }
 91     }
 92 }
 93 void main()
 94 {
 95     int number;//题目数量
 96     int l;//输出的列数
 97     int mul;//乘除法
 98     int num;//数值范围
 99     int neg;//负数
100     int remainder;//余数
101     srand((unsigned) time(NULL));//调用随机函数发生器
102     cout<<"---------------------------------"<<endl;
103     cout<<"            四则运算             "<<endl;
104     cout<<"---------------------------------"<<endl;
105     cout<<"请输入要打印的题目数量:"<<endl;
106     cin>>number;
107     cout<<"请输入要输出的列数(1-10):"<<endl;
108     cin>>l;
109     cout<<"是否有乘除法(0表示没有;1表示有)"<<endl;
110     cin>>mul;
111     if(mul==1)
112     {
113         cout<<"除法有无余数(0表示没有;1表示有)"<<endl;
114         cin>>remainder;
115     }
116     cout<<"请输入正整数的数值范围(即最大数):"<<endl;
117     cin>>num;
118     cout<<"减法有无负数(0表示没有;1表示有)"<<endl;
119     cin>>neg;
120     display(number,l,mul,num,neg,remainder);
121 }

四、运行结果截图

五、日志记录

时间: 2024-08-04 18:27:05

四则运算2完整版的相关文章

office2016 软件全集 官方下载免费完整版(含破解文件)不含垃圾软件 win10完美激活

office2016官方下载免费完整版是新一代办公软件,office2016官方下载免费完整版已经分享到下面,office2016官方下载免费完整版包括了Word.Excel.PowerPoint.OneNote.Outlook.Skype.Project.Visio以及Publisher等组件和服务.下面分享:office2016软件的下载.安装及激活. 本文来自互联网,按原教程安装结果中招了,因含有垃圾软件,所以决定改写,以免你懂的... 注册文件下载中含有垃圾软件,请按下面的步骤操作会跳过

Hadoop实战视频教程完整版 完整的Hadoop大数据视频教程

分享一套迪伦老师的完整的Hadoop实战视频教程,教程从学习Hadoop需要的数据库.Java和Linux基础讲起,非常适合零基础的学员,课程最后结合了实战项目演练,理论结合实战,深入浅出,绝对是当前最为完整.实战的Hadoop教程. <Hadoop大数据零基础高端实战培训系列配文本挖掘项目(七大亮点.十大目标)> 课程讲师:迪伦 课程分类:大数据 适合人群:初级 课时数量:230课时 用到技术:部署Hadoop集群 涉及项目:京东商城.百度.阿里巴巴 咨询QQ:1337192913(小公子)

rip路由协议 细节分析及实例配置【完整版】

rip路由协议 细节分析及实例配置[完整版] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从中发现自己不足的问题,也希望能够找到一些比较冷僻的问题,这样子才会有意思多了.   先上图,这个就是我准备做实验的基本用图了.现在已经按照图上标注的IP将所有基本配置设置好了. 在这个实验中,大多数都是基于ripv1,只有在需要比较的时候才会把版本改成ripv2,然后判断完之后再切换为ripv1: 第一步

信号处理必读的文章(-)—傅里叶分析之掐死教程(完整版)_转载至知乎

傅里叶分析之掐死教程(完整版)更新于2014.06.06 http://zhuanlan.zhihu.com/p/19763358 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师. 转载的同学请保留上面这句话,谢谢.如果还能保留文章来源就更感激不尽了. ——更新于2014.6.6,想直接看更新的同学可以直接跳到第四章———— 我保证这篇文章和你以前看过的所有文章都不同,这是12年

CSS3弹性盒模型flexbox完整版教程

文章目录 基础知识 属性介绍 display: flex | inline-flex; (适用于父类容器元素上) 请注意: flex-direction (适用于父类容器的元素上) flex-wrap (适用于父类容器上) flex-flow (适用于父类容器上) justify-content (适用于父类容器上) align-items (适用于父类容器上) align-content (适用于父类容器上) order (适用于弹性盒模型容器子元素) flex-grow (适用于弹性盒模型容

计算机组成原理_第四版课后习题答案(完整版)

计算机组成原理_第四版课后习题答案(完整版) ?第一章 1.?比较数字计算机和模拟计算机的特点. 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的: 数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行. 两者主要区别见P1?表1.1. 2.?数字计算机如何分类?分类的依据是什么? 解:分类: 数字计算机分为专用计算机和通用计算机.通用计算机又分为巨型机.大型机. 中型机.小型机.微型机和单片机六类. 分类依据:专用和通用是根据计算机的效率.速度.价格.运行的经济性和适应性来划

Centos Bind配置完整版

首先要成功安装Centos操作系统,最新版本是Centos 6.4版本,最小化安装. [root@localhost named]# ifconfig -a eth1      Link encap:Ethernet  HWaddr 00:15:5D:01:69:2C inet addr:192.168.1.251  Bcast:192.168.1.255  Mask:255.255.255.0 inet6 addr: f180::225:5cff:fe01:691c/64 Scope:Link

【甘道夫】Hadoop2.2.0 NN HA详细配置+Client透明性试验【完整版】

引言: 前面转载过一篇团队兄弟[伊利丹]写的NN HA实验记录,我也基于他的环境实验了NN HA对于Client的透明性. 本篇文章记录的是亲自配置NN HA的详细全过程,以及全面测试HA对客户端访问透明性的全过程,希望对大家有帮助. 实验环境: Hadoop2.2.0的4节点集群,ZK节点3个(ZK节点数最好为奇数个),hosts文件和各节点角色分配如下: hosts: 192.168.66.91 master 192.168.66.92 slave1 192.168.66.93 slave2

一个Brushes笔画应用ios源码完整版

效果很不错的画笔App,提供几十种不同的画笔,包括毛笔画笔.拥有绘画App的一些基本功能,包括颜色选择.绘画保存,支持撤销(undo).重做(redo)以及橡皮擦功能等等,甚至还支持类似PhotoShop图层(layer)的功能(如第二张效果图).说明:应用的App Store地址:https://itunes.apple.com/app/id545366251.效果图: <ignore_js_op> <ignore_js_op> <ignore_js_op> <