题目描述:

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

  • 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
  • 运算符为 +,-,×,÷
  • 并且要求能处理用户的输入,并判断对错,打分统计正确率。
  • 要求能处理用户输入的真分数, 如 1/2, 5/12 等
  • 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目Myapp.exe -n 10
PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2 1.5
· Estimate 估计这个任务需要多少时间 37 40
· Analysis 需求分析 (包括学习新技术) 1 1
· Coding Standard 代码规范 0.5 0.5
· Design 具体设计 1.5 1
· Coding 具体编码 30 35
· Test 测试(自我测试,修改代码,提交修改) 1 1
Reporting 报告 1 1

源代码:

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int b = 0;
int maxNum(int i, int j)
{int k;if ((k = i % j) != 0){maxNum(j, k);}elsereturn j;
}
int INT()
{int x, y, z, t, m, n, c, r1, r2;char r3[10], r4[10];srand(time(NULL));memset(r3, 0, sizeof(r3));memset(r4, 0, sizeof(r4));x = rand() % 100;y = rand() % 100;z = rand() % 4;r1 = 0;r2 = 0;switch (z){case 0:cout << x << "+" << y << "=";cin >> r1;cin.get();r2 = x + y;if (r1 == r2){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;break;case 1:if (x<y){t = x;x = y;y = t;}else;cout << x << "-" << y << "=";cin >> r1;cin.get();r2 = x - y;if (r1 == r2){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;break;case 2:cout << x << "*" << y << "=";cin >> r1;r2 = x * y;if (r1 == r2){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;break;case 3:if (y != 0){cout << x << "÷" << y << "=";c = maxNum(x, y);m = x / c;n = y / c;if (n != 1){sprintf_s(r3, "%d/%d", m, n);cin >> r4;if (strcmp(r3, r4) == 0){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}else{cin >> r2;if (r2 == m) {cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}}else {cout << x << "÷" << "1" << "=";cin >> r2;if (r2 == x) {cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}break;default:cout << "wrong" << endl;break;}return 0;
}int fra() {int x, y, z, t, m, n, c, r1, r2, i, j;char r3[10], r4[10];srand(time(NULL));memset(r3, 0, sizeof(r3));memset(r4, 0, sizeof(r4));x = rand() % 100;y = rand() % 100;i = rand() % 100;j = rand() % 100;z = rand() % 4;r1 = 0;r2 = 0;if (y == 0 || y == 1)y = 2;if (j == 0 || j == 1)j = 2;switch (z){case 0:cout << x << "/" << y << "+" << i << "/" << j << "=";m = (x*j) + (i*y);n = y*j;c = maxNum(m, n);m = m / c;n = n / c;if (n != 1) {sprintf_s(r3, "%d/%d", m, n);cin >> r4;if (strcmp(r3, r4) == 0){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}else {cin >> r2;if (r2 == m){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}break;case 1:if ((x*j)<(i*y)){t = x;x = i;i = t;t = y;y = j;j = t;}else;cout << x << "/" << y << "-" << i << "/" << j << "=";m = (x*j) - (i*y);n = y*j;c = maxNum(m, n);m = m / c;n = n / c;if (n != 1) {sprintf_s(r3, "%d/%d", m, n);cin >> r4;if (strcmp(r3, r4) == 0){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}else {cin >> r2;if (r2 == m){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}break;case 2:cout << x << "/" << y << "×" << i << "/" << j << "=";m = x*i;n = y*j;c = maxNum(m, n);m = m / c;n = n / c;if (n != 1) {sprintf_s(r3, "%d/%d", m, n);cin >> r4;if (strcmp(r3, r4) == 0){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}else {cin >> r2;if (r2 == m){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}break;case 3:cout << x << "/" << y << "÷" << i << "/" << j << "=";m = x*j;n = y*i;c = maxNum(m, n);m = m / c;n = n / c;if (n != 1) {sprintf_s(r3, "%d/%d", m, n);cin >> r4;if (strcmp(r3, r4) == 0){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}else {cin >> r2;if (r2 == m){cout << "    " << "T" << endl;b = b + 1;}else cout << "    " << "F" << endl;}break;default:cout << "wrong" << endl;break;}return 0;
}
int main(int argc, char*argv[]) {int a, c;if (argc<2)cin >> a;else a = atoi(argv[2]);srand(time(NULL));for (int i = 0; i < a; i++) {c = rand() % 2;switch (c) {case 0:INT(); break;case 1:fra(); break;default:cout << "wrong" << endl;break;}}cout << "grade:" << b;return 0;
}

运行截图:

码云链接 https://git.oschina.net/lenmo/sizeyunsuan.git

转载于:https://www.cnblogs.com/lenmo/p/6499027.html

个人作业1——四则运算题目生成程序(基于控制台)相关推荐

  1. 【2017下集美大学软工1412班_助教博客】个人作业1——四则运算题目生成程序 成绩公示...

    作业要求 个人作业1--四则运算题目生成程序(基于控制台) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数 ...

  2. 个人作业1 四则运算题目生成程序

    项目地址:https://gitee.com/wenguixin/javascript_four_algorithms.git 1.题目描述: 生成定量小学四则运算的题目. 2.需求分析: 在现今的时 ...

  3. 个人作业1——四则运算题目生成程序(基于java)

    需求分析 能够根据输入要求生成一定数量和数值范围的题目 对题目自动计算得到正确的答案 支持作答并检查计算结果 功能设计 随机数以及运算符产生 用产生随机数的原理,对已经定义好的运算符数组进行匹配,并加 ...

  4. 个人作业1——四则运算题目生成程序

    需求分析: 1.控制运算表达式的题目数量,根据键盘输入数字提供对应数量表达式 2.运算符个数不能超过三个 3.能够自动生成四则运算 4.随机生成分数运算或整数运算 5.程序判断对错并给出正确答案 6. ...

  5. 高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)...

    Deadline:2017-09-27(周三) 21:00pm (注:以下内容参考 福大软工作业 和集大个人作业 ) 0.前言 很多童鞋在本课程的目标和规划中,都表示希望能提高自己的实践能力. Pra ...

  6. 四则运算题目生成程序(基于控制台)

    基于控制台的四则运算 代码地址 a.需求分析 运算符为 +, −, ×, ÷ 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 要求能处理用户输入的真分数, ...

  7. 四则运算题目生成程序

    一.题目描述: 实践能力的提高当然就是得多动手了,那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序. 从<构建之法> ...

  8. 第一次作业--四则运算题目生成程序

    功能简介: 1.获取用户所要生成算术的个数 2.随机生成算式和式子的答案 3.生成算式和答案的txt文件来保存算式和答案 思路: 生成里的运算数分为三个部分,整数,如果是分数就再分为分子和分母,然后为 ...

  9. 购买流程图java_Java实现基于控制台的购书系统基本操作

    Java开发基于控制台的购书系统 题目 开发基于控制台的购书系统.具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号.图书名称.图书单价和库存数量. (2)顾客购买图书:根据提示输入图书 ...

最新文章

  1. python训练数据集_python – 如何训练大型数据集进行分类
  2. 在Windows使用git工具将代码同步至github(作者:ying1989920)
  3. 使用kibana客户端工具操作ElasticSearch(增删改查一)
  4. 大数据分析实战-信用卡欺诈检测(四)-正则化惩罚
  5. javac 命令的作用_机加工行业MES系统在生产调度中的重要作用
  6. mysql query profiler_Using the New MySQL Query Profiler
  7. zblog php主题,天兴工作室:zblogphp视频站主题(新增会员中心+盈利系统)
  8. Ubuntu 18.04搭建Moodle
  9. Opencv LBP特征
  10. python哪个版本好用-python用哪个版本好
  11. C++ _stdcall和__stdcall的区别
  12. win10系统映像恢复
  13. uniapp遇到后台返回base64码格式图片没有显示出来
  14. 操作系统锁的实现方法有哪几种_深入理解多线程(四)—— Moniter的实现原理
  15. Python pass 用法
  16. JavaScript能做什么 单行注释 多行注释
  17. 移动端系统:scroll,fixed
  18. 【Swing】JTextArea文本域组件
  19. python 红楼梦 人物关系_用Python来理一理红楼梦里的这些关系
  20. Bigemap打开AutoCAD文件格式(DWG DXF)

热门文章

  1. Delphi_04_Delphi_Object_Pascal_基本语法_02
  2. Block 再学习 !
  3. 使用HMSegmentedControl实现分段控件
  4. 系统设计 - 使用面向 iOS 的本机插件扩展
  5. 职业生涯第二年回顾(2011.2~2012.2)
  6. Java谜题:等于,还是不等于?
  7. 稳扎稳打Silverlight(13) - 2.0交互之鼠标事件和键盘事件
  8. 七、106页第40题(类的继承)
  9. shell脚本将本地docker镜像push到阿里云镜像仓库
  10. 中外教育专家“支招”中国学生如何接轨国际教育