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.运行结果: