个人作业1——四则运算题目生成程序(基于控制台)
2017-03-04 00:44
483 查看
题目描述:
从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:除了整数以外,还要支持真分数的四则运算,真分数的运算,例如: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); } else return 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
相关文章推荐
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- (修改)个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)
- 个人作业1——四则运算题目生成程序(基于控制台)