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> ...
随机推荐
- BOM组件物料重复检查
好吧,今天同事让做个BOM组件物料重复检查 网上有很多例子都是在保存的时候检查的,用的是BADI :BOM_UPDATE 自己也试了一下,麻烦....很麻烦...尤其是在重复检查的时候: METHOD ...
- 多线程相关Interlocked.Increment问题
今天群里有人问到如下代码打印出来的东西为什么不是连续得,所以有大神解释了原因.在这过程中遇到了些奇怪的情况 static void Main(string[] args) { for (int i = ...
- jquery.query.js 插件的用法
转载自:http://www.cnblogs.com/dachie/archive/2010/09/16/1827840.html 代码如下: var url = location.search; & ...
- BZOJ4000 [TJOI2015]棋盘
首先是状态压缩DP... 然后我们发现转移都是一样的...可以矩阵优化... 于是做完啦QAQQQ 题目读不懂?恩多读几遍就读懂了,诶诶诶!别打我呀! /*********************** ...
- Entity Framework 复杂类型
为了说明什么是复杂属性,先举一个例子. public class CompanyAddress { public int ID { get; set; } public string Compan ...
- [转]C# 应用程序安装部署步骤,安装前操作,先退出程序后卸载。
1. 点击[文件]-[新建]-[项目]-其他项目类型-安装和部署,选择安装项目,在下面的名称栏填写SetupTest(或者选择安装向导,一直点击[下一步])2. 安装项目----六个子项依次为:文件系 ...
- Linux 远程桌面控制
我现在知道有两种方式: 1.直接使用Gnome桌面的远程控制功能.在服务器端登录到gnome桌面,然后在系统菜单中打开远程桌面配置,勾选允许远程即可.这种方式客户端和服务器的两种操作将保持同步,也就是 ...
- C#入门篇6-6:字符串操作 StringBiulder string char[]之间的转化
//StringBiulder string char[]之间的转化 public static void Fun3() { StringBuilder sb = new StringBuilder( ...
- Matcher类:(转)
Matcher类: 使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这 ...
- office 使用技巧
Excel: 非打印区域显示成灰色:视图--分页预览 选定行的时侯,如何从某一行选定到末尾? 先点某一行,然后按住shift不松,再按END,再按下方向箭. 选定列也是这样,先按住某列,然后按SHIF ...