#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. SAP资产变动明细

    *&---------------------------------------------------------------------* *& Report ZFIR027 * ...

  2. C++文件读写练习

    编写一个程序,统计data.txt文件的行数,并将所有行前加上行号后写到data1.txt文件中. 算法提示: 行与行之间以回车符分隔,而getline()函数以回车符作为终止符.因此,可以采用get ...

  3. 5月11日 ArrayList集合复习、特殊集合、枚举类型

    一.ArrayList集合复习 //定义 ArrayList al = new ArrayList(); //添加元素 al.Add(); //插入元素 al.Insert(,); //查看个数 in ...

  4. Objective-C:Foundation框架-常用类-NSDate

    直接上代码吧: #import <Foundation/Foundation.h> #pragma mark 日期创建 void dateCreate() { // date方法返回的就是 ...

  5. 大作业关于(“有爱”youi)的简介

    我们团队一共四个人,我们足够了解对方的优缺点,能够很好的进行交流沟通.对于一些问题也能有好的方法去解决,我做事情比较讲究高效和尽可能的完美,或者说要做到我自己觉得完美,才会停下来.对于一件事情,我有自 ...

  6. JavaScript prototype 属性

    prototype 属性使开发人员有能力向对象添加属性和方法. 语法 object.prototype.name=value 实例 在本例中,我们将展示如何使用 prototype 属性来向对象添加属 ...

  7. SVN删除同名文件夹

    解     释一下:     SVN  出现这个错误的原因是我删除了一个文件夹后又创建了一个同名文件夹.  在  svn   server  端,好像是不能区分这两个文件夹,所以出现了错误.     ...

  8. Assert断言测试

    assert编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真.可以在 ...

  9. js使用正则表达式

    参考慕课网示例: 使用js对html输入框内容进行校验: 1. 只能输入5-20个字符,必须以“字母”开头 2. 可以带“数字" “_” “.”的字串 <!DOCTYPE html P ...

  10. (DFS)hdoj1175:连连看

    题目链接 这道题被稍微改编当作过去年的期末上机题,也被直接放到了这次这一届的第二次练习赛.当初刚看到这道题时DFS并没有系统的学过,做起来极其费劲.现在学过之后开始实践练习,发现这道题真的是很水. 我 ...