软件工程个人作业01

1.撰写一篇博文要求将程序的设计思想,源程序代码、运行结果截图以及分析一下个人上课未按时完成的原因。

1》设计思想

1)首先确定这个程序的功能,即进行整数四则运算和真分数四则运算,所以先要确定写两个大的模块

2)整数运算部分,就是进行一个循环,为30次,然后每次循环产生两个进行运算的数(0~100) ,还要产生一个随机数用来表示运算符,即产生0~3的随机数,分别代表加减乘除。然后如果进行除法,如果分母为零,则对其加1.然后将结果显示出来。

3)真分数运算部分,进行30次循环,每次循环先产生四个随机数,用来表示分子,分母。然后为了结果为真分数,要将分子分母比较大小,然后将分子变为较小的数。然后保证分母不为零,分母为零则加1.然后进行约分,保证为最简分数。最后将结果显示出来。

4)设置退出程序以跳出循环。

2》源程序代码

//简单的四则运算,用随机数实现
//2016 3 7 Sunzhe
#include<iostream>
using namespace std;

void main()
{
    int x;//进行选择的数
    q:cout<<"请选择要进行的运算:1.整数运算 2.真分数运算 3.退出程序"<<endl;
    cin>>x;
   switch(x)//进行整数的运算
 {
     case 1:
     {
      for(int i=0;i<30;i++)
      {
        int n=rand() %4;//产生随机数,运算符的

        int a=rand()%100;//产生1~100随机数
        int b=rand()%100;//产生1~100随机数

        if(n==0){
          cout<<a<<"+"<<b<<"="<<endl;
        }
        else if(n==1){
           cout<<a<<"-"<<b<<"="<<endl;
        }
        else if(n==2){
           cout<<a<<"*"<<b<<"="<<endl;
        }
        else{
          if(b==0){
              b++;
              }
          cout<<a<<"/"<<b<<"="<<endl;
         }
      }
    goto q;
    }
    case 2:
    {
      for(int i=0;i<30;i++)
      {
        int c=rand()%100;//产生1~100随机数
        int d=rand()%100;//产生1~100随机数
        int e=rand()%100;//产生1~100随机数
        int f=rand()%100;//产生1~100随机数


        //保证为真分数
        if(c>d)
        {
          int t;
          t=d;
          d=c;
          c=t;
        }
        if(e>f)
        {
          int s;
          s=f;
          f=e;
          e=s;
        }
        if(d==0){d++;} //分母不为零
        if(f==0){f++;} //分母不为零
        //约分化为最简
        for(int a=c;a>0;a-- )
        {
           if(c%a==0&&d%a==0)
           {
              c=c/a;
              d=d/a;
              break;
           }
        }
        for(int b=e;b>0;b-- )
        {
            if(e%b==0&&f%b==0)
            {
                e=e/b;
                f=f/b;
                break;
             }
        }

        int n=rand() %4; //产生运算符的随机数

        if(n==0){
            cout<<c<<"/"<<d<<"+"<<e<<"/"<<f<<"="<<endl;
        }
        else if(n==1){
            cout<<c<<"/"<<d<<"-"<<e<<"/"<<f<<"="<<endl;
        }
        else if(n==2){
            cout<<c<<"/"<<d<<"*("<<e<<"/"<<f<<")="<<endl;
        }
        else
        {
            cout<<c<<"/"<<d<<"/("<<e<<"/"<<f<<")="<<endl;
         }
      }
      goto q;
    }
    case 3:
    {
      exit(0);
    }

  }
}

3》运行结果截图

4》分析一下个人上课未按时完成的原因

主要是对随机数的产生这块掌握的不是很熟练,要查阅有关资料才能写出相应代码,还有就是刚开始考虑不太周全,没有考虑到确保真分数及真分数的约分等问题。

原文地址:https://www.cnblogs.com/sz20142898/p/5251681.html