设计思路:
使用函数将四则运算封装成四类,分别是jiajian00(),jiajian01(),chengchu00(),chengchu01().
在主函数中调用函数fushuyushu0()来实现加减法有无负数和除法有无余数的控制;
在jiajian00(),jiajian01(),chengchu00(),chengchu01()函数中分别实现生成运算数,输出题目,计算结果并判断客户输入答案的正误。
本程序实现了整数的加减乘除运算功能,并可控制有无负数,有无余数,运算数的取值范围,以及判断正误和统计正确题目数量的功能。
#include<iostream> #include<ctime> #include<vector> using namespace std; int zq=0; void chengchu00(int min, int max)//整数无余数 { int c1, c2, k,z,x; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------乘法部分 { cout << c1 << "*" << c2 << "=" << endl; x = c1*c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } else//------------------------------除法部分 { for (;;) { c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; int c3 = c1*c2; do { c3 = c3 - c1; } while (c3 > max); if ((c3 < max) && (c1 != 0)) { cout << c3 << "/" << c1 << "=" << endl; x = c3/c1; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; break; } } } } void chengchu01(int min, int max)//整数有余数 { int c1, c2, k; float x,z; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------乘法部分 { cout << c1 << "*" << c2 << "=" << endl; x = c1*c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } else//------------------------------除法部分 { for (;;) { c1 = rand() % (max - min) + min + 1; if (c1 == 0) { c2 = rand() % (max - min) + min + 1; if (c2 != 0) { cout << c1 << "/" << c2 << "=" << endl; x =(float) c1 / c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << "(" <<c1<<"/"<<c2<<")"<<endl; break; } } else { c2 = rand() % c1; if (c2 != 0) { cout << c1 << "/" << c2 << "=" << endl; x = c1 / c2; int y = c1%c2; cout << "请输入你的答案:" << endl; int m; cin >> z>>m; if ((z == x)&&(y==m)) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << "(" << c1 << "/" << c2 << ")" << endl; break; } } } } } void jiajian00(int min, int max)//整数无负数 { int c1, c2, k,x,z; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------加法部分 { cout << c1 << "+" << c2 << "=" << endl; x = c1 + c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } else//------------------------------减法部分 { if (c1>c2) { cout << c1 << "-" << c2 << "=" << endl; x = c1 - c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } else { cout << c2 << "-" << c1 << "=" << endl; x = c2 - c1; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } } } void jiajian01(int min, int max)//整数有负数 { int c1, c2, k,x,z; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------加法部分 { cout << c1 << "+" << c2 << "=" << endl; x = c1+ c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } else//------------------------------减法部分 { cout << c1 << "-" << c2 << "=" << endl; x = c1 - c2; cout << "请输入你的答案:" << endl; cin >> z; if (z == x) { cout << "正确" << endl; ++zq; } else cout << "错误,正确答案是:" << x << endl; } } void fushuyushu0(int a,int b, int min, int max)//整数运算 { if ((a == 1) && (b == 1)) { int k = rand() % 2; if (k == 0) { chengchu01(min, max); } else jiajian01(min, max); } if ((a == 0) && (b == 0)) { int k = rand() % 2; if (k == 0) { chengchu00(min, max); } else jiajian00(min, max); } if ((a == 0) && (b == 1)) { int k = rand() % 2; if (k == 0) { chengchu01(min, max); } else jiajian00(min, max); } if ((a == 1) && (b == 0)) { int k = rand() % 2; if (k == 0) { chengchu00(min, max); } else jiajian01(min, max); } } void chengchu10(int min, int max)//真分数无余数 { int c1, c2, c3, c4, k; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; c3 = rand() % (max - min) + min + 1; c4 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------乘法部分 cout << "cuowu"; else//------------------------------除法部分 { cout << "cuowu"; } } void jiajian10(int min, int max)//真分数无负数 { int c1, c2, k; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------加法部分 { cout << c1 << "+" << c2 << "=" << endl; } else//------------------------------减法部分 { if (c1>c2) { cout << c1 << "-" << c2 << "=" << endl; } else cout << c2 << "-" << c1 << "=" << endl; } } void jiajian11(int min, int max)//真分数有负数 { int c1, c2, k; c1 = rand() % (max - min) + min + 1; c2 = rand() % (max - min) + min + 1; k = rand() % 2; if (k == 0)//---------------------------------加法部分 { cout << c1 << "+" << c2 << "=" << endl; } else//------------------------------减法部分 { cout << c1 << "-" << c2 << "=" << endl; } } void fushuyushu1(int a, int b, int min, int max)//真分数运算 { if (a == 1) { int k = rand() % 2; if (k == 0) chengchu10(min, max); else jiajian11(min, max); } if (a == 0) { int k = rand() % 2; if (k == 0) chengchu10(min, max); else jiajian10(min, max); } } int main() { int a, b, c, min, max,N; cout << "请输入出题数目:" << endl; cin >> N; cout << "减法是否有负数:(0否;1是)" << endl; cin >> a; cout << "除法是否有余数:(0否;1是)" << endl; cin >> b; cout << "请分别输入下限和上限" << endl; cin >> min >> max; for (int i = 0; i < N; i++) { fushuyushu0(a, b, min, max); } cout << "共答对" << zq << "道题" << endl; /*cout << "整数运算输入0,真分数运算输入1" << endl; cin >> c; if (c == 0) { cout << "减法是否有负数:(0否;1是)" << endl; cin >> a; cout << "除法是否有余数:(0否;1是)" << endl; cin >> b; cout << "请分别输入下限和上限" << endl; cin >> min >> max; for (int i = 0; i < 100; i++) { fushuyushu0(a, b, min, max); } } else { for (int i = 0; i < 100; i++) { cout << "减法是否有负数:(0否;1是)" << endl; cin >> a; fushuyushu1(a,b,min, max); } }*/ return 0; }



项目计划总结:
| 日期/任务 | 听课 | 编写程序 | 阅读相关书籍 |
|
日总计 |
| 周一 | 110 | 110 | |||
| 周二 | |||||
| 周三 | |||||
| 周四 | 110 | 110 | 210 | ||
| 周五 | 60 | ||||
| 周六 | 300 | 60 | 360 | ||
| 周日 | 60 | 60 | |||
| 周总计 | 220 | 360 | 230 | 810 |
时间记录日志:
| 日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
| 3/7 | 14:00 | 15:50 | 14:50 | 100 | 上课 | 工程师能力评估与发展 |
| 3/10 | 14:00 | 15:50 | 14:50 | 100 | 上课 | 软件单元测试 |
| 19:00 | 22:00 | 110 | 看书 | 构建之法 | ||
| 3/12 | 8:00 | 11:30 | 210 | 编写代码 | ||
| 3/12 | 1:20 | 3:50 | 150 | 编写代码 | ||
| 3/13 | 8:00 | 11:30 | 180 | 看书 | 构建之法 |
实验总结:
通过本次实验,初次结对开发,通过两个人的交流合作,将问题具体化 然后解决,使用主驾驶员和副驾驶员的细条配合模式,大大减小了出错率,但初次配合,还是遇到了不少问题,双方不能明确的表达思路和想法,造成编码速度减慢,通过多次配合可以改进。
队友张家军的博客园链接http://www.cnblogs.com/zjj123456/
浙公网安备 33010602011771号