导航

自动生成小学四则运算题目(改进版)

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)    收藏  举报