#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>的更多相关文章

  1. 30道四则运算<1>

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

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

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

  3. 随机生成30道四则运算-NEW

    补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进. 首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出3 ...

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

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

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

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

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

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

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

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

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

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

  9. 30道小学生四则运算题C/C++编程

    软件工程科课上,老师通过实例讲解什么是程序,程序和软件的区别,要求我们通过短时间写一道编程题, 题目就是编写30道小学生四则运算题.以下就是源代码: #include<iostream.h> ...

随机推荐

  1. C语言实现统计字符个数

    #include<stdio.h> int main() {     int sz[10]={0},zm[26]={0},z[26]={0},i,space=0,e=0,t=0;      ...

  2. 在 Visual C# 项目中调用 VBA 中的代码

    https://msdn.microsoft.com/zh-cn/library/Bb608613.aspx http://www.cnblogs.com/yangbin1005/archive/20 ...

  3. mysqldump导出--数据+结构+(函数+存储过程)

    #导出某个数据库--结构+数据shell>mysqldump -h192.168.161.124 -uroot -pxxxxxx --opt db_name |gzip -9 > /db_ ...

  4. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  5. Admob(6.12.x)符号未定义错误的解决方法(IOS)

    在升级Admob的SDK版本到6.12.x时, 按照官方文档操作(https://developers.google.com/mobile-ads-sdk/docs/#ios), 添加如下framew ...

  6. 二模 (12) day1

    第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...

  7. 二模 (5)day1

    第一题: 题目大意:解一元一次方程(只有+-符号): 解题过程:直接处理处两边的x的系数和常数项,字符串的处理即可. 第二题: 题目大意:求逆序对数. 解题过程:直接归并排序. 第三题: 题目大意:多 ...

  8. C# JavaScriptSerializer 解析Json数据(多方法解析Json 三)

    准备工作: 1.添加引用System.Web.Extensions, 2..net3.5+版本都有,如果VS2010找不到,在这个文件夹找:C:\Program Files\Reference Ass ...

  9. 详解centos用户&组权限&添加删除用户

    1.Linux用户操作系统 Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种: 细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还有组账户所谓组账户就是用户账户的集合,ce ...

  10. 学习linux与wp8.1——启航

    现在不知不觉已经大三了,而本专业的东西没有多大感兴趣的,我看好wp开发和linux开发. 为什么要学习wp开发?其实就是一种兴趣,我手中有部620而已,学着学着就感兴趣了,所以打算继续学下去.同时,我 ...