1.题目要求:随机生成30道四则运算题目,其中包含真分数的四则运算
2.设计思路:
(1)定义结构体,包含算式的运算符、两个操作数及表示整数运算和真分数运算的值,定义该结构体的长度为30的一维数组;
(2)利用随机数函数产生该数组的各个元素的各个值;
(3)根据减法被减数比减数大和除法除数不为零的规则对算式进行限制;
(4)输出算式。
3.代码:
#include<iostream>
#include<ctime>
using namespace std;
struct calcu
{
int fuhao; //0,1,2,3分别代表+,-,*,/
int firNum; //算式的第一个数
int lastNum; //算式的第二个数
int intORfen; //0,1分别代表整数运算和真分数运算
};
void main()
{
srand((unsigned)time(NULL));
calcu num[30];
int i;
for (i = 0; i < 30; i++)
{
num[i].firNum = rand()%100; //四则运算的第一个数
num[i].lastNum = rand()%100; //四则运算的第二个数
num[i].fuhao = rand() % 4; //四则运算的运算符
num[i].intORfen = rand() % 2;
if (num[i].fuhao == 1) //当运算符为-时
{
if (num[i].firNum < num[i].lastNum)
{
int mNum = num[i].firNum;
num[i].firNum = num[i].lastNum;
num[i].lastNum = mNum;
}
}
if (num[i].fuhao == 3) //当运算符为/时
{
if (num[i].lastNum == 0)
{
i = i - 1;
}
}
}
for (i = 0; i < 30; i++)
{
//整数四则运算
if (num[i].intORfen == 0)
{
switch (num[i].fuhao)
{
case 0:cout << num[i].firNum << " + " << num[i].lastNum << " = " << endl; break;
case 1:cout << num[i].firNum << " - " << num[i].lastNum << " = " << endl; break;
case 2:cout << num[i].firNum << " * " << num[i].lastNum << " = " << endl; break;
case 3:cout << num[i].firNum << " / " << num[i].lastNum << " = " << endl;
}
}
//真分数四则运算
else
{
int addnum1 = rand() % 20+1;
int addnum2 = rand() % 20+1;
switch (num[i].fuhao)
{
case 0:cout << num[i].firNum << "/" << num[i].firNum + addnum1 << " + " << num[i].lastNum << "/" << num[i].lastNum + addnum2 << " = " << endl; break;
case 1:cout << num[i].firNum << "/" << num[i].firNum + addnum1 << " - " << num[i].lastNum << "/" << num[i].lastNum + addnum2 << " = " << endl; break;
case 2:cout << "(" << num[i].firNum << "/" << num[i].firNum + addnum1 << ") * (" << num[i].lastNum << "/" << num[i].lastNum + addnum2 << ") = " << endl; break;
case 3:cout << "(" << num[i].firNum << "/" << num[i].firNum + addnum1 << ") / (" << num[i].lastNum << "/" << num[i].lastNum + addnum2 << ") = " << endl;
}
}
}
}
4.运行结果:
