• 软件工程个人作业01


    程序要求:

    能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。

    设计思路:

       30道题的设计:

       1。随机生成两个float数,范围0—99

       2。随机生成第三个整数,范围1—4。用多个if。。。else语句判别1—4来分别确定四则运算符号,并且计算出两个数的运算结果。

       3。需要加一个判断语句:如果第二个随机数为0并且当时为除法,则重新生成随机数和运算符。

       4。如果不是3,则反复执行12,并且输出。

       5.设置一个计数器,到达30的时候,停止。

       假分数的设计:

       基本同上面设计30道题类似,就是把分子、分母换成真分数,然后判断的时候,比上面的判断多了一个。

      

    源代码:

    /*能自动生成30道小学四则运算题目,要求除了整数以外,还要支持假分数的四则运算     底云飞   2016.3.7

    */

    #include <iostream>

    #include <time.h>

    #include <string>

    using namespace std;

    void main()

    {

        srand((unsigned)time(0));  //用时间做随机种子,随机数发生器

        float rand1=0,rand2=0,rand3=0,rand4=0,c=5;  //随机数12对应被除数和除数,c是用于四则运算的,rand34用在假分数上

        float num=0;  //num是结果

        string fu;  //运算符号

        int a=0,b=0;  //a用来给30道四则运算计数的,b用来给假分数个数计数的

        int flag,number;  //用于判断是否需要生成真分数,number用来输入几个假分数的运算

       

    //开始列出30道四则运算题

        cout<<"下面是30道四则运算:"<<endl;

        for(int i=1;i<50;i++)

        {

    p:     rand1 = rand()%100;

           rand2 = rand()%100;

           c = rand()%4+1;  //生成两个随机数和确定运算符的C

           if(c==1)

           {

               num=rand1+rand2;

               fu = "+";

           }

           else if(c==2)

           {

               num=rand1-rand2;

               fu = "-";

           }

           else if(c==3)

           {

               num=rand1*rand2;

               fu = "*";

           }

           else if(c==4)

           {

               num=rand1/rand2;

               fu = "/";

           }                        //直接用num把运算结果算出来,用于后面显示

           if(fu=="/"&&rand2==0)  //如果除法时分母为0,则重新生成随机数

               goto p;

           cout<<a+1<<"."<<rand1<<fu<<rand2<<"="<<num<<endl;

           a++;

           if(a==30)  //当达到30个时,结束

               break;

           }  //for

     

    //假分数的四则运算

        cout<<"需要生成假分数的四则运算吗(需要输入1,不需要输入0)?:";

        cin>>flag;

        if(flag==1)

        {

           cout<<"需要生成几个假分数的四则运算?";

           cin>>number;

           cout<<"下面是生成的"<<number<<"个四则运算:"<<endl;

           for(int i=1;i<=1000;i++)

           {

               rand1 = rand()%100;

               rand2 = rand()%100;

               rand3 = rand()%100;

               rand4 = rand()%100;

               c = rand()%4+1;

               if(rand2>=rand1&&rand4>=rand3&&rand1!=0&&rand2!=0)  //判断是真分数并且分母不能为0

               {

                  if(c==1)

                  {

                      num=(rand2/rand1)+(rand4/rand3);

                      fu = "+";

                  }

                  else if(c==2)

                  {

                      num=(rand2/rand1)-(rand4/rand3);

                      fu = "-";

                  }

                  else if(c==3)

                  {

                      num=(rand2/rand1)*(rand4/rand3);

                      fu = "*";

                  }

                  else if(c==4)

                  {

                      num=(rand2/rand1)/(rand4/rand3);

                      fu = "/";

                  }

                  cout<<"("<<rand2<<"/"<<rand1<<")"<<fu<<"("<<rand4<<"/"<<rand3<<")="<<num<<endl;

                  b++;

               }//判断是两个真分数的if条件语句

               if(b==number)  //当达到真分数数量要求时,停止

                  break;

           }//for

        }//if

        else if(flag==0)

           exit(1);

    }

    程序感想:

          首先要注意设计思路,要有清晰的思路,最后输出那个运算符的时候,程序当中时提前计算出结果,然后直接就显示了,不是最后让两个数计算的。然后就是需要考虑到除数和分母为0的情况,需要去掉。假分数的程序需要注意输出,判断和计数的位置顺序问题。

  • 相关阅读:
    C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id
    基于角色的菜单按钮权限的设计及实现
    基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现
    Canny算法检测边缘
    图像平滑去噪之高斯滤波器
    运动元素提取,基于帧间差分与背景差分
    基于RGB与HSI颜色模型的图像提取法
    基于阈值的灰度图像提取法
    C语言深入学习
    大津法实现图像二值化
  • 原文地址:https://www.cnblogs.com/diyunfei/p/5252367.html
Copyright © 2020-2023  润新知