30道四则运算<2>
#include<iostream>
#include<time.h>
#include<fstream>
#define random() (rand()%100)
using namespace std; void main()
{
ofstream outfile;
outfile.open("a.txt");
char add='+';
char sec='-';
char min='*';
char div='/';
int length;
cout<<"请输入题目数量:";
cin>>length; bool printway;
cout<<"请选择打印方式 <1>txt文档 <0>屏幕:";
cin>>printway; bool divsion;
cout<<"请选择是否有除法<1>有除法 <0>无除法:";
cin>>divsion; bool bracket;
cout<<"请选择是否有括号<1>有括号 <0>无括号:";
cin>>bracket; bool negative;
cout<<"加减有无负数<1>有负数 <0>无负数:";
cin>>negative; bool remainder;
cout<<"除法有无余数<1有余数> <0>无余数:";//先计算结果,再根据条件输出
cin>>remainder; int widestart;
int wideend;
cout<<"数值范围(起始---终止):";
cin>>widestart;
cin>>wideend; int i;//循环参数
int j;//循环参数
int firstnum;
int secondnum;
int thirdnum;
int fourthnum;
int fifthnum;
srand((int)time(NULL)); for( i=;i<length;i++) //循环输出length个算式
{
firstnum=rand()%wideend+widestart;
secondnum=rand()%wideend+widestart;
thirdnum=rand()%wideend+widestart;
fourthnum=rand()%wideend+widestart;
fifthnum=rand()%wideend+widestart; if(negative)/*if negative =1 当加减存在负数时*/
{
if(printway) //若输出到txt
{
outfile<<firstnum;
outfile<<add;
}
else
{
cout<<firstnum;
cout<<add;
}
if(bracket) //若选择有括号输出左括号
{
if(printway)
{
outfile<<"(";
}
else
{
cout<<"(";
}
} //输出左括号结束
if(printway)
{
outfile<<secondnum;
outfile<<sec;
outfile<<thirdnum;
outfile<<min;
outfile<<fourthnum;
}
else
{
cout<<secondnum;
cout<<sec;
cout<<thirdnum;
cout<<min;
cout<<fourthnum;
} //输出除法之前的数
if(bracket)
{
if(printway)
{
outfile<<")";
}
else
{
cout<<")";
}
} //输出右括号 /*******************************************************************************************有除法有括号没有余数**/
if(divsion) //有除法的情况
{
if(bracket)//if have bracket,panduan shifou you yushu
{
if (!remainder) //如果没有余数
{
for(i=;;)
{
int result=( secondnum-thirdnum*fourthnum ) /fifthnum;
if( result==)
{
if(printway)
{
outfile<<div<<fifthnum;
}
else
{
cout<<div<<fifthnum;
}
break;
}
else
{
fifthnum=rand()%wideend+widestart;
}
}
}
} /**************************************************************************************有除法无括号无余数********/
else//meiyou kuohao panduan shifou you yushu
{ if (!remainder) //没有余数的情况
{ for(i=;;)
{
int result1=(thirdnum*fourthnum ) / fifthnum;
if( result1 ==) //判断是否有余数,若没有,则输出
{
if(printway)
{
outfile<<div<<fifthnum<<"="<<endl;
}
else
{
cout<<div<<fifthnum<<"="<<endl;
}
break;
}
else
{
fifthnum=rand()%wideend+widestart; //若有余数。则重新生成除数
}
}
} }
} if(printway)
{
outfile<<"="<<endl;
}
else
{
cout<<"="<<endl;
} } else/* negative=0 没有负数的情况*/
{
if(printway)
{
outfile<<firstnum;
outfile<<add;
}
else
{
cout<<firstnum;
cout<<add;
}
if(bracket)
{
if(printway)
{
outfile<<"(";
}
else
{
cout<<"(";
}
}
if(printway)
{
outfile<<secondnum;
outfile<<sec;
outfile<<thirdnum;
outfile<<min;
outfile<<fourthnum;
}
else
{
cout<<secondnum;
cout<<sec;
cout<<thirdnum;
cout<<min;
cout<<fourthnum;
}
for(j=;;) /* a+b-c*d/e 则判断b-c*d不能有负数 ,若有负数则循环至 没有*/
{
secondnum=rand()%wideend+widestart;
if(secondnum>(thirdnum*fourthnum))
{
if(printway)
{
outfile<<firstnum<<add;
}
else
{
cout<<firstnum<<add;
}
if(bracket)
{
if(printway)
{
outfile<<"(";
}
else
{
cout<<"(";
}
}
if(printway)
{
outfile<<secondnum<<sec<<thirdnum<<min<<fourthnum;
}
else
{
cout<<secondnum<<sec<<thirdnum<<min<<fourthnum;
}
} //循环结束 if(divsion)
{
if(printway)
{
outfile<<")"<<div;
}
else
{
cout<<")"<<div;
}
if(bracket)//if have bracket,panduan shifou you yushu
{
if (!remainder)
{
for(i=;;)
{
int flag=firstnum+( secondnum-thirdnum*fourthnum ) /fifthnum ;//有括号的情况下判断是否有余数
if( flag ==)
{
if(printway)
{
outfile<<fifthnum;
}
else
{
cout<<fifthnum;
}
break;
}
else
{
fifthnum=rand()%wideend+widestart;
}
}
}
else
{
if(printway)
{
outfile<<")";
outfile<<div<<fifthnum;
}
else
{
cout<<")";
cout<<div<<fifthnum;
}
}
}
else//meiyou kuohao panduan shifou you yushu
{
if (!remainder)
{
for(i=;;)
{
int flag1= (thirdnum*fourthnum )/fifthnum;
if( flag1 ==) //没有括号的情况下判断余数是否为0
{
if(printway)
{
outfile<<div<<fifthnum;
}
else
{
cout<<div<<fifthnum;
}
break;
}
else
{
fifthnum=rand()%wideend+widestart;
}
}
}
else
{
if(printway)
{
outfile<<")";
outfile<<div<<fifthnum;
}
else
{
cout<<")";
cout<<div<<fifthnum;
} }
}
break;
} if(printway)
{
outfile<<"="<<endl;
}
else
{
cout<<"="<<endl;
}
} }
}
outfile.close();
}
我的设计思路是:
先输出一个菜单:多少道题目,输出到屏幕还是文档,是否有除法,是否有括号,是否有负数,是否有余数,以及随机数的范围这几个方面。这几个方面的控制是由bool类型控制的,是为“1”,否为“2”。
我的主函数里面最外层是用一个循环来控制题目的数量。
接下来是一个if。。。else语句,将加减是否有负数进行分类,有负数进入if语句,没有负数进入else语句。
我所设置的括号位置是固定的,都是a+(b-c*d)/e=的样式。有括号的就输出,不选择有括号就输出a+b-c*d/e。
范围带入到rand函数就可以了,输出到屏幕用的是outfile输出,还剩除法和余数两项。
有除法才会有余数,括号又可以影响运算顺序,所以得到嵌套:
if(有负数)
{
if(有除法)
if(有括号)
if(没有余数)
}
else
{
if(有除法)
if(有括号)
if(没有余数)
}
30道四则运算<2>的更多相关文章
- 30道四则运算<1>
#include<iostream> using namespace std; #define random()(rand()%100) class shuzi //shuzi类的功能是产 ...
- 软件工程课后作业——用JAVA编写的随机产生30道四则运算
package com.java.sizeyunsuan; public class lianxi { String f() { int i=(int)(Math.random()*10); int ...
- 随机生成30道四则运算-NEW
补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进. 首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出3 ...
- 随机的30道四则运算题(简单的c)
#include <stdio.h>#include <stdlib.h>#include <time.h> int main(void){ int i = 0; ...
- 30道四则运算题目---课堂作业--软件工程c++
问题:设计一程序,给二年级小学生随机产生四则运算题目. 一.设计思考问题: 1.四则运算需要俩个运算数和一个运算符. 2.如何产生随机数? 3.如何实现随机产生四则运算? 4.题目是否符合小学生学习范 ...
- Java——自动生成30道四则运算---18.09.27
package chuti;import java.io.PrintWriter;import java.util.Scanner;import java.io.FileNotFoundExcepti ...
- 30道四则运算<2>单元测试
该测试未实现除法 该测试中间多了/)两个符号,而且没有等号和回车. 该测试也没有符合除法要求 该测试也没有满足除法要求 该测试满足要求. 总结:程序中涉及到有除法的输出都有问题,多次改正未果:其他条件 ...
- 随机生成30道四则运算题NEW
代码: #include <iostream> #include <time.h> using namespace std; void main() { srand((int) ...
- 30道小学生四则运算题C/C++编程
软件工程科课上,老师通过实例讲解什么是程序,程序和软件的区别,要求我们通过短时间写一道编程题, 题目就是编写30道小学生四则运算题.以下就是源代码: #include<iostream.h> ...
随机推荐
- 判断jQuery元素是否隐藏
第一种:使用CSS属性 复制代码 代码如下: var display =$('#id').css('display'); if(display == 'none'){ alert("被 ...
- SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束
创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...
- 安卓手机修改host
电脑修改 注意:usb设置为调试模式 1.手机必须先root,小米可以安卓开发版系统即可 2.安卓 adb工具(android debug bridge) 3.依次执行下面的命令 1.adb root ...
- 转载 jQuery validation
之前做客户端验证感觉自己javascript 不行,虽然能写出来一完整的验证,但从不自信,一直觉得客户端验证是比较繁琐的事情,但是又不能不做,只到最开始接触ajax ,遇到了一个jQuery vali ...
- 22. Generate Parentheses——本质:树,DFS求解可能的path
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- 第五章 CSS页面布局基础
1.标准文档流 在正常流中,在没有使用浮动或者定位的情况下,文本元素按照从上到下.从左到右的格式布局.这是浏览器的默认行为.在正常流中,块级元素从上到下依次排列,而行级元素从左到右依次排列.正常流中的 ...
- 微信支付官方SDK V3 .NET版的坑
但是支付成功后却不能正确的执行支付结果js回调函数.看看其页面的点击事件是放在asp:Button上面的.我们知道在asp.net webform中,按钮的点击是有页面回调后台的.也就是其实点击了之后 ...
- [Jquery]导航菜单效果-纵向
$( document ).ready( function(e){ var $catCont = $( ".cat-cont" ); //二级菜单div var $ca ...
- S1 :闭包
闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常见方式,就是在一个函数内部创建另一个函数,以createComparisonFunction()函数为例 function createCo ...
- 主机无法访问虚拟机上的elasticsearch服务器
问题: es在linux上搭建好,通过curl -XGET ip:port可以获得服务器信息展示,但是主机在浏览器上无法访问. 原因: 主机通过telnet访问linux的80端口,发现是不通的.可以 ...