实验要求:
可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求:
1、题目避免重复;
2、可定制(数量/打印方式);
3、可以控制下列参数:
是否有乘除法;
是否有括号(最多可以支持十个数参与计算);
数值范围;
加减有无负数;
除法有无余数!
阅读PSP相关资料,掌握psp项目计划、时间记录、缺陷记录相关日志文件。
实验思路:
一题目避免重复
int【num1】【sym】【num2】
循环核对
乘除muldiv
1代表加减
2代表乘除
3代表加减乘除
数值范围
a = -rand() % (max-min+1)+max;
#include<iostream>
#include<ctime>
#include<stdlib.h>
#include<string>
#define N 30
using namespace std;
int main()
{
int num1, num2, sym, tscore, asmd, brackets, min, max, negativenum, remainder;
string sym2;
srand((int)time(NULL)); //---------做时间种子
cout << "是否包含真分数(0表示否,1表示是)" << endl;
cin >> tscore;
cout << "四则运算包含哪些(1表示加减,2表示乘除,3表示加减乘除)" << endl;
cin >> asmd;
//cout << "是否包含括号(0表示否,1表示是)" << endl;
//cin >> brackets;
cout << "请输入取值范围(最小数 最大数)" << endl;
cin >> min>>max;
//cout << "加减有无负数,(1表示有,0表示没有)" << endl;
//cin >> negativenum;
//cout << "除法有无余数,(1表示有,0表示没有)" << endl;
//cin >> remainder;
srand((int)time(NULL)); //---------做时间种子
for (int i = 1; i < N; i++)
{
if (tscore == 0)//---整数
{
num1 = -rand() % (max - min + 1) + max;
do
{
num2 = (-rand() % (max - min + 1) + max);
} while (num2 == 0);
}
int a, b, c, d;//-------真分数
if (tscore == 1)
{
string num3, num4;
a = (-rand() % (max - min + 1) + max);//-----产生第一个真分数的分子分母
do
{
b = (-rand() % (max - min + 1) + max);
} while (b == 0);
c = (-rand() % (max - min + 1) + max);//-----产生第二个真分数的分子分母
do
{
d = (-rand() % (max - min + 1) + max);
} while (d == 0);
}
if (asmd == 1)
{
sym = rand() % 2;
if (sym == 0)
sym2 = "+";
if (sym == 1)
sym2 = "-";
}
if (asmd == 2)
{
sym = rand() % 2;
if (sym == 0)
sym2 = "*";
if (sym == 1)
sym2 = "/";
}
if (asmd == 3)
{
sym = rand() % 4;
if (sym == 0)
sym2 = "+";
if (sym == 1)
sym2 = "-";
if (sym == 2)
sym2 = "*";
if (sym == 3)
sym2 = "/";
}
if (tscore == 0)
{
cout << num1 << sym2 << num2 << "=" << endl;
}
if (tscore == 1)
{
cout << a << "/" << num2 << "=" << endl;
}
}
return 0;
}
运行结果:



浙公网安备 33010602011771号