软件工程个人作业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的情况,需要去掉。假分数的程序需要注意输出,判断和计数的位置顺序问题。

posted @ 2016-03-07 23:07  底云飞  阅读(258)  评论(2编辑  收藏  举报