自动生成小学四则运算题目(改进版)
Github项目地址:https://github.com/Masterpiece256/masterpiece
1.题目要求
- 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
- 除了整数外,还要支持真分数的四则运算
2.PSP表格
(在开始实现程序之前,在下述PSP表格记录估计将在程序的各个模块的开发上耗费的时间。)
|
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
10 |
15 |
|
Estimate |
估计这个任务需要多少时间 |
60 |
80 |
|
Development |
开发 |
50 |
80 |
|
Analysis |
需求分析 (包括学习新技术) |
15 |
20 |
|
Design Spec |
生成设计文档 |
10 |
15 |
|
Design Review |
设计复审 (和同事审核设计文档) |
10 |
15 |
|
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
10 |
|
Design |
具体设计 |
20 |
40 |
|
Coding |
具体编码 |
30 |
50 |
|
Code Review |
代码复审 |
5 |
10 |
|
Test |
测试(自我测试,修改代码,提交修改) |
10 |
25 |
|
Reporting |
报告 |
20 |
30 |
|
Test Report |
测试报告 |
10 |
15 |
|
Size Measurement |
计算工作量 |
5 |
10 |
|
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
10 |
15 |
|
合计 |
|
270 |
430 |
3.解题思路
刚开始拿到题目后,如何思考,如何找资料的心路历程。
首先想到的是该软件给小学生使用的,所以答案不应该出现负数,即自动生成的两个随机数在进行减法运算时需比较大小;而在除法运算时,除数不能为0;还要实现支持真分数的四则运算,避免假分数自动生成,所以自动生成的数若为分数则需小于1。
功能升级:由于上一次的作业没有做到真分数和整数结合,这次便将代码进行了简单的改进。
4.设计实现
先利用rand()函数随机生成两个算数,包括100以内的整数和真分数,生成100以内的整数,用rand()%100,为了避免在除法运算中除数不能为零,所以运算符右边的整数直接用1+rand()%99;在随机生成真分数时,我先生成两个整数,来充当分子和分母,同样分母不能为零,用1+rand()%99。加减乘除四则运算有整数与整数之间的运算,分数与分数之间的运算,整数和分数之间的运算,分数和整数之间的运算,一共有16种情况,先随机生成一个整数,然后除以16取余数,余数一共有16种情况,作为switch 语句中的事件,来随机生成一个四则运算,再用一个for循环生成30个四则运算。
5.代码说明
1 #include<iostream>
2 #include<stdlib.h>
3 #include<time.h>
4 using namespace std;
5 void main()
6 {
7 int Num_1,Num_2,i,j,a,b; //定义两个整数变量Num_1,Num_2,在四则运算时做100以内的整数算数,定义i,a为整型,做真分数的分子,定义j,b为整型,做真分数的分母。
8 int x,y; //定义整型x,y,x为siwtch,case语句中的事件,y随机生成一个数。
9 srand((unsigned)time(NULL));//运用srand函数设立随机种子,让种子和当前时间有关,避免每次生成的随机数相同。
10 for(int k=0;k<30;k++) //运用for循环,共循环30次,生成30随机运算。
11 {
12 Num_1=rand()%100; //运用rand()函数随机生成100以内的整数。
13 Num_2=1+rand()%99; //运用rand()函数生成1到100以内的整数,作为第二个运算数,避免在除法运算中0的出现。
14 i=rand()%100; //用于随机生成第一个真分数的分子。
15 j=1+rand()%99; //用于随机生成第一个真分数的分母。
16 a=rand()%100; //用于随机生成第二个真分数的分子。
17 b=1+rand()%99; //用于随机生成第二个真分数的分母。
18 y=1+rand(); //随机生成一个整数,用于除以15取余
19 x=y%16; //把取得的余数赋给x,整数和整数之间的四则运算,分数之间的四则运算,整数和分数之间的四则运算,分数和整数之间的四则运算
20 switch(x) //运用siwtch,case语句进行条件判断,随机生成。
21 {
22 case 0:cout<<Num_1<<"+"<<Num_2<<"="<<endl;break;//case0到case3是整数和整数之间的四则运算
23 case 1:cout<<Num_1<<"-"<<Num_2<<"="<<endl;break;
24 case 2:cout<<Num_1<<"*"<<Num_2<<"="<<endl;break;
25 case 3:cout<<Num_1<<"/"<<Num_2<<"="<<endl;break;
26 case 4:if(i<j) //case4到case7是分数和分数之间的四则运算
27 {
28 if(a<b)
29 {cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<a<<"/"<<b<<")"<<"="<<endl;}
30 else
31 {cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<b<<"/"<<a<<")"<<"="<<endl;}
32 }
33 else
34 {
35 cout<<"("<<j<<"/"<<i<<")"<<"+"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
36 }
37 break;
38 case 5:if(i<j)
39 {
40 if(a<b)
41 {cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<a<<"/"<<b<<")"<<"="<<endl;}
42 else
43 {cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<b<<"/"<<a<<")"<<"="<<endl;}
44 }
45 else
46 {
47 cout<<"("<<j<<"/"<<i<<")"<<"-"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
48 }
49 break;
50 case 6:if(i<j)
51 {
52 if(a<b)
53 {cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<a<<"/"<<b<<")"<<"="<<endl;}
54 else
55 {cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<b<<"/"<<a<<")"<<"="<<endl;}
56
57 }
58 else
59 {
60 cout<<"("<<j<<"/"<<i<<")"<<"*"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
61 }
62 break;
63 case 7:if(i<j)
64 {
65 if(a<b)
66 {cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<a<<"/"<<b<<")"<<"="<<endl;}
67 else
68 {cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<b<<"/"<<a<<")"<<"="<<endl;}
69
70 }
71 else
72 {
73 cout<<"("<<j<<"/"<<i<<")"<<"/"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
74 }
75 break;
76 case 8:if(i<j) //case8到case11是分数和整数之间的四则运算
77 cout<<i<<"/"<<j<<"+"<<Num_2<<"="<<endl;
78 else
79 cout<<j<<"/"<<i<<"+"<<Num_2<<"="<<endl;
80 break;
81 case 9:if(i<j)
82 cout<<i<<"/"<<j<<"-"<<Num_2<<"="<<endl;
83 else
84 cout<<j<<"/"<<i<<"-"<<Num_2<<"="<<endl;
85 break;
86 case 10:if(i<j)
87 cout<<i<<"/"<<j<<"*"<<Num_2<<"="<<endl;
88 else
89 cout<<i<<"/"<<j<<"*"<<Num_2<<"="<<endl;
90 break;
91 case 11:if(i<j)
92 cout<<i<<"/"<<j<<"/"<<Num_2<<"="<<endl;
93 else
94 cout<<i<<"/"<<j<<"/"<<Num_2<<"="<<endl;
95 break;
96 case 12:if(a<b) //case12到case15是分数和整数之间的四则运算
97 cout<<Num_1<<"+"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
98 else
99 cout<<Num_1<<"+"<<"("<<b<<"/"<<a<<")"<<"="<<endl;
100 break;
101 case 13:if(a<b)
102 cout<<Num_1<<"-"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
103 else
104 cout<<Num_1<<"-"<<"("<<b<<"/"<<a<<")"<<"="<<endl;
105 break;
106 case 14:if(a<b)
107 cout<<Num_1<<"*"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
108 else
109 cout<<Num_1<<"*"<<"("<<b<<"/"<<a<<")"<<"="<<endl;
110 break;
111 case 15:if(a<b)
112 cout<<Num_1<<"/"<<"("<<a<<"/"<<b<<")"<<"="<<endl;
113 else
114 cout<<Num_1<<"/"<<"("<<b<<"/"<<a<<")"<<"="<<endl;
115 break;
116 }
117 }
118 }
6.测试运行

7.记录实际花费时间
返回上表。
posted on 2020-09-27 17:26 陈立农不知名圈外女友 阅读(173) 评论(0) 收藏 举报
浙公网安备 33010602011771号