本次作业的题目是随机生成30道四则运算的题目,要求有整数和真分数。
设计思想: 1.随机生成数
2.四则运算符随机生成
3.在除法的时候,被除数不能为0
4.随机生成整数四则运算和真分数之间的四则运算
5.在真分数运算时,分母不能为0,分子要小于分母,并且在真分数除法运算时,被除数分子也不能为0
6.循环生成30道题
遇到的问题:1.考虑问题不全面,有时候考虑了分子不能为0的情况,但是会缺失一些数字
2.没有问题的分类,除法考虑的问题应该分个类,进行判断。
解决的办法:1.和同学进行交流,发现问题的不足,并且重新修改,缺失的情况补上并且完善它。
//2016 3.6 杨涛 软件工程作业 随机生成30道四则运算 包括整数和真分数 #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { int a, b, c, d, i, j; srand((unsigned)time(NULL)); for (j = 30; j > 0; j--) { char operator_lib[4] = { '+', '*', '/', '-' }; //定义运算符的可选类型 int rand_oper_idx = rand() % 4; //然后随机生成,上述数组的下标就可以了。 char cur_oper = operator_lib[rand_oper_idx]; i = rand() % 2; switch (i) { case 0: a = rand() % 100; //a取值为0~99 c = rand() % 100; //c取值为1~99 if (cur_oper == '/') { if (c == 0) { c = rand() % 99+1; } cout << a << cur_oper << c << " = " << endl; } else cout << a << cur_oper << c << " = " << endl; break; case 1: a = rand() % 99 + 1; //a取值为1~99 b = rand() % a; //保证b小于a c = rand() % 99 + 1; //c取值1~99 d = rand() % c ; //保证d小于d 0~c-1 if (cur_oper == '/') { if (d == 0) { d = d + 1; c = rand() % 98 + 2; } cout << b << "/" << a << " " << cur_oper << " " << d << "/" << c << "=" << endl; } else cout << b << "/" << a << " " << cur_oper << " " << d << "/" << c << "=" << endl; break; } } return 0; }
感悟:别看这小小的程序,也有很多的门道在里面,我花的时间还是挺久的,而且同学也帮助了我,以后会多加练习编程,发现编程还是很有意思的,特别是成功了之后很有成就感。