个人作业1——四则运算题目生成程序(基于控制台)
No.1 四则运算题目生成程序(基于控制台)
需求分析:
能够根据用户自身对题目数量的需求自动生成一定数量的包含分数的四则运算题目的命令行程序。
功能设计:
- 除了整数以外,还要支持真分数的四则运算,真分数的运算
- 并且要求能处理用户的输入,并判断对错,打分统计正确率
- 要求能处理用户输入的真分数
- 使用 -n 参数控制生成题目的个数
设计实现:
程序是用c++实现的,主要有四个函数,主函数随机生成整数或者分数算法,divisor(int i, int j)计算最大公约数,zs为计算整数算法,fs为计算分数算法。
代码说明:
随机数为0是整数四则运算,随机数为1是分数四则运算
int main() { int n, c; float d; cout<<"请输入要生成的题目数量-n:"; cin >> n; for (int i = 0; i < n; i++) { c = rand() % 2; switch (c) { case 0:zs(); break; case 1:fs(); break; default: cout << "wrong" << endl; break; } } d=count/(float)n; cout<<"本次共"<<n<<"道题,"<<"答对"<<count<<"道题"<<endl; cout << "正确率为:" <<setprecision(2)<< d<<endl; system("pause"); return 0; }
求分数分子与分母最大公约数以便化简
int divisor(int i, int j)//最大公约数 { int k=1,s; for(s=1;s<=i&&s<=j;s++){ if(i%s==0&&j%s==0) k=s; } return k; }
分数随机生成分子分母及四则运算主要代码如下:
int fs() {//分数算法 int fz1, fm1, fh, t, fz, fm, c, r1, r2, fz2, fm2;//fz:约分后分子,fm:约分后分母,c:分式最大公约数 char r3[10], r4[10]; srand(time(NULL)); fz1 = rand() % 99; fm1 = rand() % 100; fz2 = rand() % 99; fm2= rand() % 100; fh = rand() % 4; r1 = 0; r2 = 0; while (fz1 == 0) fz1 = rand() % 99; while(fz2== 0) fz2= rand() % 99; while (fm1 == 0 || fm1 == 1|| fm1<=fz1) fm1 = rand() % 100; while(fm2== 0 || fm2== 1||fm2<=fz2) fm2= rand() % 100; ``` }
测试如下
PSP:
PSP2.1 |
Personal Software Process Stages |
Time (min) Senior Student |
Time (%) |
Planning |
计划 |
15 |
25 |
· Estimate |
估计这个任务需要多少时间 |
30 |
40 |
Development |
开发 |
40 |
60 |
· Analysis |
需求分析 (包括学习新技术) |
10 |
25 |
· Design Spec |
生成设计文档 |
10 |
15 |
· Design Review |
设计复审 |
5 |
3 |
· Coding Standard |
代码规范 |
20 |
20 |
· Design |
具体设计 |
20 |
15 |
· Coding |
具体编码 |
60 |
120 |
· Code Review |
代码复审 |
5 |
5 |
· Test |
测试(自我测试,修改代码,提交修改) |
10 |
10 |
Reporting |
报告 |
10 |
15 |
· |
测试报告 |
3 |
5 |
· |
计算工作量 |
3 |
5 |
· |
并提出过程改进计划 |
5 |
0 |
小结:由于平时编码较少,出现了许多错误,比如对随机数的生成并不熟悉,最后查阅了资料才得以解决,这也导致了效率比较低。