补充:紧跟上一个随机生成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的更多相关文章

  1. 随机生成30道四则运算题NEW

    代码: #include <iostream> #include <time.h> using namespace std; void main() { srand((int) ...

  2. 软件工程课后作业——用JAVA编写的随机产生30道四则运算

    package com.java.sizeyunsuan; public class lianxi { String f() { int i=(int)(Math.random()*10); int ...

  3. 随机的30道四则运算题(简单的c)

    #include <stdio.h>#include <stdlib.h>#include <time.h> int main(void){ int i = 0; ...

  4. Java——自动生成30道四则运算---18.09.27

    package chuti;import java.io.PrintWriter;import java.util.Scanner;import java.io.FileNotFoundExcepti ...

  5. 30道四则运算<1>

    #include<iostream> using namespace std; #define random()(rand()%100) class shuzi //shuzi类的功能是产 ...

  6. 30道四则运算题目---课堂作业--软件工程c++

    问题:设计一程序,给二年级小学生随机产生四则运算题目. 一.设计思考问题: 1.四则运算需要俩个运算数和一个运算符. 2.如何产生随机数? 3.如何实现随机产生四则运算? 4.题目是否符合小学生学习范 ...

  7. 30道四则运算<2>

    #include<iostream> #include<time.h> #include<fstream> #define random() (rand()%100 ...

  8. 软件工程随堂作业--随机产生30到四则运算(c语言)

    #include "stdio.h" #include "math.h" #include "stdlib.h" #include" ...

  9. 30道四则运算<2>单元测试

    该测试未实现除法 该测试中间多了/)两个符号,而且没有等号和回车. 该测试也没有符合除法要求 该测试也没有满足除法要求 该测试满足要求. 总结:程序中涉及到有除法的输出都有问题,多次改正未果:其他条件 ...

随机推荐

  1. XML第一次简单入门(Lab分析)

    In this tutorial you will create a well-formed and verified XML file. Consider the XML document belo ...

  2. Linux之CentOS7.5安装及克隆

    官网下载地址:https://www.centos.org/,点击Get CentOS Now,点击DVD ISO,选择本国资源Actual Country ,一般选择列表中第一行就可以下载. 这里我 ...

  3. 用JS遍历循环时覆盖了之前的值

    使用js遍历Echarts时,三个数据项,七个分类,遍历如下, 其他都没有问题,就是series.data里的数据只加载了一组,控制台显示数组的长度是7,可是下面的数据只有一个 发现把给数据项赋值的语 ...

  4. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

  5. python3 实现一个多级菜单小功能

    记录下一下 #!/usr/bin/env python3 ''' 需求:三级菜单 三级菜单,依次进入子菜单 ''' City = { '北京':{ '大兴区':[ '亦庄','黄村','中信新城',' ...

  6. 使用kubeadm安装kubernetes/部署前准备/flannel网络插件/镜像下载/

    本文内容参考<kuberneters进阶实战>/马哥的新书/推荐 部署前的准备 主机名称解析 分布式系统环境中的多主机通信通常基于主机名称进行,这在IP地址存在变化的可能性时为主机提供了固 ...

  7. Go语言 异常panic和恢复recover用法

    Go语言 异常panic和恢复recover用法 背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在 ...

  8. 【C】对指针表达式的个人总结与思考

    本文内容参考<c 和 指针>. 声明:本博文只为那些能沉得住气,认真研究,探索真知的人参考,浮躁的人请离开,因为看不懂. 感觉以前学c的时候,学的指针真是白学了,今天看到这个内容,困惑后, ...

  9. 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结

    20155214曾士轩 2006-2007-2 <Java程序设计>第1周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 1.标准API的架构指的是什么? 2.一个项 ...

  10. 201555301 2016-2017-2《Java程序设计》课程总结

    20155301 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:我对师生关系的思考 预备作业2:从现有技能获取的经验应用于JAVA中 预备作业 ...