代码:

 #include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
#include <math.h>
#include <fstream>
#include <string>
#define random()(rand()%1000)
using namespace std; //数字转换为字符串
string int_string(int number)
{
int value = abs(number);//取绝对值
char str[];
_itoa_s(value, str, ); //运用itoa()函数将int型整数转换为字符串
string str_= str;
return str_;
}
//算式转换为字符串
string group(string str1, string str2, char m) // group:算式组合
{
string Equation; // equation:算式
Equation = str1 + m + str2;
return Equation;
}
//生成运算符
char mark(int opt)
{
int opt1, a;
char symbol[]; // 符号数组
if (opt == )
{
opt1 = ;
}
if (opt == )
{
opt1 = ;
}
a = random() % opt1+; //随机生成1-2或1-4的数,随opt的值而定,opt意为是否含有乘除法
if (a == ) symbol[] = '+';
if (a == ) symbol[] = '-';
if (a == ) symbol[] = '*';
if (a == ) symbol[] = '/';
return symbol[];
}
//主函数
void main()
{
srand((int)time(NULL)); //设置时间种子,每次执行种子不同,生成不同的随机数
int num1, num2,minus;
int opt, bracket, output, max, min, amount, control, b, c,d;
string str_num1, str_num2, value; //数字-字符串
cout << "是否需要包含乘除法?1(有),0(没有):" << endl;
cin >> opt; //opt:选择是否含有乘除法
/*cout << "是否需要包含负数1(有),0(没有):" << endl;
cin >> minus; */
cout << "是否含有括号?1(有),0(没有):" << endl;
cin >> bracket;
cout << "题目是否要在文件中输出?1(是),0(不是):" << endl;
cin >> output;
cout << "请输入数字范围:(格式为:最小数 空格 最大数)" << endl;
cin >> max>>min;
cout << "请输入出题数量:" << endl;
cin >> amount;
string equation[]; //定义数组
char symbol;
ofstream fout;
/*if (opt == 1)
{
cout << "除法有无余数,1(有),0(无)" << endl;
cin >> remainder;
}*/
if ( output == )
{
fout.open("output.txt");
fout << amount << "道四则运算题如下:" << endl;
}
else
{
cout << amount << "道四则运算题如下:" << endl;
}
for (int i = ; i<amount; i++) //为输出规定题数
{
num1 = random() % (max - min + ) + min;// 随机生成min-max的整数
num2 = random() % (max - min + ) + min;// 随机生成min-max的整数
control = random() % + ; //控制是几个数的运算式,最多支持10个数的运算式
symbol = mark(opt);
/*if (minus == 0) //本来要加负数的,思路有点不清晰,以后改进
{
str_num1 = int_string(num1);
str_num2 = int_string(num2);
}
if (minus == 1)
{
d = random() % 2; //随机生成0-1的数
if (d == 0)
{
str_num1 = int_string(num1);
str_num2 = '-' + str_num2;
}
}*/
str_num1 = int_string(num1);
str_num2 = int_string(num2);
equation[i] = group(str_num1, str_num2, symbol);
if (control >= )
{
for (; control >= ; control--)
{
symbol = mark(opt);
str_num1 = equation[i];
if (bracket == )
{
b = random() % ; //随机生成0-2的数
if (b == ) //如果b=0,就在字符串str_num1的左右加上括号
{
str_num1 = '(' + str_num1 + ')';
}
}
symbol = mark(opt);
num2 = random() % (max - min + ) + min;// 随机生成min-max的整数
str_num2 = int_string(num2);
b = random() % ;
if (b == )
{
value = str_num1;
str_num1 = str_num2;
str_num2 = value;
}
equation[i] = group(str_num1, str_num2, symbol);
}
}
//判断是否重复
int repeat = ; //repeat:重复
for (c = ; c<i; c++)
{
if (equation[c] == equation[i])
{
i = i - ;
repeat = ;
break;
}
}
if (repeat != )//若不重复,则输出
{
if (output == )
{
fout << equation[i] << "=" << endl;
}
else
{
cout << equation[i] << "=" << endl;
}
} }
if (output == ) //输出到文件
{
fout.close();
}
}

Right-BICEP测试要求:

1.Right-结果是否正确?

2.B-是否所有的边界条件都是正确的?

3.I-能查一下反向关联吗?

4.C-能用其他手段交叉检查一下结果吗?

5.E-你是否可以强制错误条件发生?

6.P-是否满足性能要求?

对四则运算2程序的测试用例如下:

第一组测试用例:数值范围1-148,输出数量10,不含乘除、括号,在DOS界面输出。

第二组测试用例:数值范围1-541,输出数量11,含乘除,在DOS界面输出。

第三组测试用例:数值范围1-234,输出数量21,含乘除、括号,在DOS界面输出。

第四组测试用例:数值范围1-672,输出数量16,不含乘除,含括号,在DOS界面输出。

第五组测试用例:数值范围1-198,输出数量10,含乘除、括号,在文件中输出。

依据Right-BICEP要求的对四则运算2的测试的更多相关文章

  1. 四则运算小程序测试--c++--软件工程课

    一.测试内容: 1.生成题目数是否准确?2.打印方式(列数l.行间距jj)是否准确?3.有无乘除法cc是否准确?4.数的范围fw是否准确?5.除法有无余数c是否准确?6.加减有无负数f是否准确? 二. ...

  2. 四则运算生成命令行程序 (Python)

    Github项目地址:Github Pages 结对项目成员:张鹏 3118004985 郑靓 3118004988 一.项目需求分析 二.功能实现 三.代码实现or功能说明 ★ GUI功能扩展说明 ...

  3. 【2015 软件工程 个人项目 PJ1】四则运算题目生成程序

    1.开发时间预估 PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 2day Dev ...

  4. RIGHT-BICEP单元测试——“二柱子四则运算升级版”

    RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单 ...

  5. XPath、XQuery 以及 XSLT 函数

    存取函数 名称 说明 fn:node-name(node) 返回参数节点的节点名称. fn:nilled(node) 返回是否拒绝参数节点的布尔值. fn:data(item.item,...) 接受 ...

  6. 常见Android测试工具简介

    在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...

  7. NUnit单元测试

    单元测试对程序员来说是非常重要的一门技术,但是在实际编程中却往往被程序员所忽视.微软的VS开发工具为我们提供了强大的单元测试环境,在VS当中可以直接对类库项目进行测试,极大的方便了程序员的自我纠错能力 ...

  8. TestNG操作详解

    运行测试步骤方法有如下两种: 1. 直接在Eclipse运行testNG的测试用例, 在代码编辑区域鼠标右键, 选择Run as ->testNG Test 2. 在工程的根目录下, 建立tes ...

  9. 谈谈我理解的SA——Systems Architecture

    什么是SA? SA即Systems Architecture,是系统体系结构. 系统体系结构是定义系统的结构.行为和系统视图的概念模型.架构师将其系统的形式化描述或表示出来,以支持结构和行为的推理的方 ...

随机推荐

  1. sublime Text3安装 markdownediting 报错 解决记录

    看了一下官方文档,也是醉了,都怪自己的无知. 在安装时候不要打开.md的文件,因为你里面有可能有一些语法错误,所以会导致报错. 解决方法关闭其他文件,在重新安装! 官方解释: 参考文档:Trouble ...

  2. MySQL学习【第十一篇存储引擎之事务解释】

    一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Ato ...

  3. activemq的搭建、启动,简单demo

    一.搭建activeMQ 在官网下载window版本,直接解压就可以. 二.启动 在解压完的目录/bin/win64,双击击activemq.bat,运行完之后打开浏览器,输入http://127.0 ...

  4. mysql/mariadb学习记录——limit

    在mysql/mariadb 中可以用limit来限制查询的条数.例子如下: 1.limit后加一个参数 limit n: //选中查询所有结果中的前两条记录并返回 mysql> ; +---- ...

  5. Selenium_python自动化跨浏览器执行测试(简单多线程案例)

    发生背景: 跨浏览器测试是功能测试的一个分支,用以验证web应用在不同浏览器上的正常工作,通常情况下,我们都期望web类应用能够被我们的用户在任何浏览器上使用,例如有的人喜欢IE浏览器上使用,有的人喜 ...

  6. structc 开源框架简介

    了解 structc-https://github.com/wangzhione/structc structc 是 C 构建基础项目框架. 不是太惊艳, 但绝对是 C 简单项目中一股清流. 它的前身 ...

  7. [Golang学习笔记] 09 字典

    字典(Map):map[K]T K:为键类型,T:为元素(值)类型.例:map[int] string 一个键类型为int,值类型为string的字典类型 Go语言的字典类型(map)实际上是一个哈希 ...

  8. VMWare 桥接模式

    桥接网络模式是VMware虚拟机中最简单直接的模式. 桥接网络(Bridged Networking) 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图 ...

  9. 20155217 2016-2017-2《java程序设计》第一周学习总结

    20155217 2016-2017-2<java程序设计>第一周学习总结 浏览教材,根据自己的理解每章提出一个问题 java平台和java编程语言的区别? 怎样使用IDE来管理原始码与位 ...

  10. 20155302杨效宸《Java程序设计》课程总结

    20155302杨效宸<Java程序设计>课程总结 一.每周作业 第一周学习总结:http://www.cnblogs.com/STILLlover521/p/6457914.html 第 ...