随机生成30道四则运算-NEW
补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进。
首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出30道一样的题吧!2.没有考虑,如果随机出的是除法,且除数为0的情况。3.没有实现生成真分数的四则运算的功能。
经过分析,决定依次进行改进:
针对问题1:在程序中设置时间种子,即可使得每次程序运行的结果不同。
针对问题2:当判断要生成除法运算时,做一个判断,若除数为0,则重新生成。
针对问题3:定义一个变量m,m也是随机数,当m为偶数时,生成整数之间的四则运算;当m为奇数时,生成真分数之间的四则运算。那么问题又来了,真分数的条件为,分子小于分母。所以还得判断分子与分母的大小,若能生成真分数,则进行运算。否则重新生成。当真分数之间进行的是除法运算时,还得考虑除数是否为0的情况,若是,重新生成,若不是则进行运算!
几番周折之后,终于把还算符合条件的程序修改好!代码如下:
// 随机生成30道100以内的四则运算,可以出现真分数 王世强 2015/3/4
#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<time.h>
using namespace std;
#define random() (rand()%100)
int main()
{
int i,j,m,a,b,c,d;
char k;
srand((int)time(NULL)); //设置时间种子 ,使得程序每次运行的结果都不同
for(i=;i<;i++)
{
a=random();
b=random();
c=random();
d=random(); j=random();
m=random(); j=j%;
m=m%;
if(m==) //m=0时,生成整数四则运算
{
if(j==) k='+';
else if(j==) k='-';
else if(j==) k='*';
else
{
for(;;)
{
if(b==) b=random();
else break;
}
k='/';
} cout<<setw()<<a<<setw()<<k<<setw()<<b<<setw()<<"= "<<endl;
}
else //m=1时,生成真分数四则运算
{
for(;;) //位于分母的c不能为0
{
if(c<=a)
{
c=random();
}
else break;
}
for(;;) //位于分母的d不能为0
{
if(d<=b)
{
d=random();
}
else break;
}
if(j==) k='+';
else if(j==) k='-';
else if(j==) k='*';
else //当b为0时,b/d为除数,所以b也不能为0
{
for(;;)
{
if(b==)
{
b=random();
}
else if(b<=d)
{
d=random();
}
else break;
}
k='/';
} cout<<setw()<<a<<"/"<<c<<setw()<<k<<setw()<<b<<"/"<<d<<setw()<<"= "<<endl;
} }
return ;
}
运行结果如下:
感悟:一下子就完成相对符合要的程序,对我来说还是有一些难度的。但是,这次的练习,让我懂得了,好的程序的不是一下子就成功的,有时把它分解为小的模块慢慢解决,算是一个明智的选择。当然还有经过多次的修改,才能做的更好!加油~_~
随机生成30道四则运算-NEW的更多相关文章
- 随机生成30道四则运算题NEW
代码: #include <iostream> #include <time.h> using namespace std; void main() { srand((int) ...
- 软件工程课后作业——用JAVA编写的随机产生30道四则运算
package com.java.sizeyunsuan; public class lianxi { String f() { int i=(int)(Math.random()*10); int ...
- 随机的30道四则运算题(简单的c)
#include <stdio.h>#include <stdlib.h>#include <time.h> int main(void){ int i = 0; ...
- Java——自动生成30道四则运算---18.09.27
package chuti;import java.io.PrintWriter;import java.util.Scanner;import java.io.FileNotFoundExcepti ...
- 30道四则运算<1>
#include<iostream> using namespace std; #define random()(rand()%100) class shuzi //shuzi类的功能是产 ...
- 30道四则运算题目---课堂作业--软件工程c++
问题:设计一程序,给二年级小学生随机产生四则运算题目. 一.设计思考问题: 1.四则运算需要俩个运算数和一个运算符. 2.如何产生随机数? 3.如何实现随机产生四则运算? 4.题目是否符合小学生学习范 ...
- 30道四则运算<2>
#include<iostream> #include<time.h> #include<fstream> #define random() (rand()%100 ...
- 软件工程随堂作业--随机产生30到四则运算(c语言)
#include "stdio.h" #include "math.h" #include "stdlib.h" #include" ...
- 30道四则运算<2>单元测试
该测试未实现除法 该测试中间多了/)两个符号,而且没有等号和回车. 该测试也没有符合除法要求 该测试也没有满足除法要求 该测试满足要求. 总结:程序中涉及到有除法的输出都有问题,多次改正未果:其他条件 ...
随机推荐
- ansible常用配置
1.什么是Ansible 部署参考连接:http://www.ansible.com.cn/ ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng ...
- js的组合函数
1.组合函数即由若干个函数组合成一个新的函数,同时完成数据的传递 1>最简单版本 这种方法实现的组合函数,需要我们指定函数的执行顺序 /**第一种方法 */ function add(a, b) ...
- macOS安装MongoDB
先在macOS里安装一个很好的插件 1.百度搜索homebrew 或 直接进入https://brew.sh 2.复制网页下面的命令符 /usr/bin/ruby -e "$(curl -f ...
- php wamp基础环境搭建
一.apache 安装配置: 1.安装apache 1.1 下载地址:https://www.apachelounge.com/download/ 1.2 将下载的文件解压到你想安装的目录 D:\WA ...
- Delphi写的DLL,OCX中多线程一个同步问题
Delphi写的DLL,OCX中如果使用了TThread.Synchronze(Proc),可能导致线程死锁,原因是无法唤醒EXE中主线程, Synchronze并不会进入EXE主线程消息队列. 下面 ...
- 【深度优先搜索】NOIP2017_D2T1 洛谷3958奶酪
这道题的写法大体有两种:大法师DFS和并查集,两种算法都不难,本篇博客主要讲解DFS,而且测试数据特水,连个剪枝都不用都可以过. 题目描述[luogu传送门] 现有一块大奶酪,它的高度为 h,它的长度 ...
- document ready
https://developer.mozilla.org/zh-CN/docs/Web/Events/DOMContentLoaded https://github.com/addyosmani/j ...
- 20155213 2016-2017-2《Java程序设计》第三周学习总结
20155213 2016-2017-2<Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类和对象的关系:类决定对象,对象反映类的性质 定义值域成员:在新建的类中定义变量,可 ...
- Cache-Aside模式
Cache-Aside 该模式是从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式.该模式可以有效的提高性能,同时也能一定程度上保证缓存中的数据和数据仓库中的数据的一致性,和同步数据到数据仓库 ...
- Java技术——Interface与abstract类的区别
)抽象类是对类抽象,是面向整个类的自下而上的设计理念,一般是先有各种子类,再有把这些有关系的子类加以抽象为父类的需求.而接口是对行为的抽象,是面向行为的自上而下的设计理念,接口根本就不需要知道子类的存 ...