码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程个人作业01

时间:2016-03-07 21:00:15      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

个人作业题:像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。

1.设计思想

(1)利用系统时间随机生成六个变量,其中四个0~99的整数变量作为数学题的算数因子;随机生成的0~3结合switch语句表示四则运算符;随机生成的0~1结合switch语句生成真分数或整数的四则运算题。

(2)用循环语句保证输出题目数量为三十。

(3)用条件语句保证真分数的生成,判断运算题是够有意义。

(4)写一个分数化简的函数。

2.源程序代码

//用随机数生成30道小学数学题
//Jiang LingJun 2016,03,07
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void Abbreviation(int x,int y)//分数化简
{
  int i;
  for(i=x;i>0;i--)
    if(x%i==0&&y%i==0)
      {x=x/i;y=y/i;}
}
void main()
{
  srand(unsigned(time(0)));//用系统时间生成随机数种子

  int i;
  for(i=0;i<30;i++)
  {
    int c;
    char s;//定义字符型变量表示随机产生的运算符
    c=rand()%4;//利用系统时间产生随机数
    switch (c)
    {
      case 0: s=‘+‘;break;
      case 1: s=‘-‘;break;
      case 2: s=‘*‘;break;
      case 3: s=‘/‘;break;
    }
    int a,b,d,f;
    a=rand()%100;
    b=rand()%100;
    d=rand()%100;
    f=rand()%100;//随机数生成数学题中的因子

    int e;
    e=rand()%2;//随机生成真分数运算或者整数运算题的变量
    switch(e)
    {
      case 0://生成整数运算题的情况
        if(b==0&&c==3)
          i--;//除数为0时重新生成一个题目,保证30道题的数量
        else
          cout<<a<<s<<b<<"="<<endl;
          break;
      case 1://生成真分数运算题的情况
        if(b!=0&&f!=0&&a<b&&d<f&&c>=2)//真分数相乘除的情况
        {
          Abbreviation(a,b);
          Abbreviation(d,f);
          cout<<a<<"/"<<b<<s<<"("<<d<<"/"<<f<<")"<<"="<<endl;
        }
        else if(b!=0&&f!=0&&a<b&&d<f&&c<=2)//真分数相加减的情况
        {
          Abbreviation(a,b);
          Abbreviation(d,f);
          cout<<a<<"/"<<b<<s<<d<<"/"<<f<<"="<<endl;
        }
        else
          i--;//重新生成题目,保证30道题的数量
          break;
    }
  }
}

3.运行结果截图:

技术分享

技术分享

4.上课未完成原因

(1)忘记switch语句用法及随机数生成算法

(2)编程思维不够灵活

 

软件工程个人作业01

标签:

原文地址:http://www.cnblogs.com/jianglingjun/p/5251774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!