软件工程个人作业01——四则运算1

一、题目要求

  一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。

  像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。

  要求:除了整数以外,还要支持真分数的四则运算。

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

二、设计思想

  1、分数和整数运算分别处理;

  2、随机产生并输出这一部分功能用一个rand函数实现;

  3、随机产生运算数这一功能,两个运算数可以用随机函数生成,并将它们控制在100以内。其中,考虑到除数不能为零,第二个运算数随机产生时+1;

  4、随机产生运算法则这一功能,运算法则一共有4种,也可以随机产生0-4的数,分情况进行四则运算。

三、源程序代码

  1 //四则运算1,张莹荧
  2 #include<iostream>
  3 #include<stdlib.h>
  4 #include<conio.h>
  5 using namespace std;
  6 
  7 void DealFenshu(int m, int a[][2])
  8 {
  9     for (int p = 0; p<m; p++)
 10     {
 11         int i = (int)rand() % 100;
 12         int j = (int)rand() % 100;
 13         while (j == 0 || i >= j)
 14         {
 15             i = (int)rand() % 100;
 16             j = (int)rand() % 100;
 17         }
 18         int x = (int)rand() % 100;
 19         int y = (int)rand() % 100;
 20         while (y == 0 || x >= y)
 21         {
 22             x = (int)rand() % 100;
 23             y = (int)rand() % 100;
 24         }
 25         int k = (int)rand() % 100 / 25;
 26         switch (k)
 27         {
 28         case 0:
 29             cout << "(" << i << "/" << j << ")" << "+" << "(" << x << "/" << y << ")" << "=" << endl;
 30             a[p][0] = i*y + x*j;
 31             a[p][1] = j*y;
 32             break;
 33         case 1:
 34             cout << "(" << i << "/" << j << ")" << "-" << "(" << x << "/" << y << ")" << "=" << endl;
 35             a[p][0] = i*y - x*j;
 36             a[p][1] = j*y;
 37             break;
 38         case 2:
 39             cout << "(" << i << "/" << j << ")" << "*" << "(" << x << "/" << y << ")" << "=" << endl;
 40             a[p][0] = i*x;
 41             a[p][1] = j*y;
 42             break;
 43         case 3:
 44             a[p][0] = i*y;
 45             a[p][1] = j*x;
 46             cout << "(" << i << "/" << j << ")" << "/" << "(" << x << "/" << y << ")" << "=" << endl;
 47         }
 48     }
 49 
 50 }
 51 
 52 void DealInt(int m, int a[])
 53 {
 54 
 55     for (int p = 0; p<m; p++)
 56     {
 57         int i = (int)rand() % 100;
 58         int j = (int)rand() % 100;
 59         int k = (int)rand() % 100 / 25;
 60         switch (k)
 61         {
 62         case 0:
 63             cout << i << "" << j << "=" << endl;
 64             a[p] = i + j;
 65             break;
 66         case 1:
 67             cout << i << "" << j << "=" << endl;
 68             a[p] = i - j;
 69             break;
 70         case 2:
 71             cout << i << "×" << j << "=" << endl;
 72             a[p] = i*j;
 73             break;
 74         case 3:
 75             try
 76             {
 77                 a[p] = i / j;
 78                 cout << i << "÷" << j << "=" << endl;
 79             }
 80             catch (...)
 81             {
 82                 p--;
 83             }
 84         }
 85 
 86         
 87     }
 88 }
 89 
 90 void main()
 91 {
 92     int p;
 93     do
 94     {
 95         system("cls");
 96         int a[1000], b[1000][2];
 97         int m, n;
 98         cout << "请输入生成的四则运算题个数:";
 99         cin >> m;
100         cout << endl;
101         cout << "请输入要生成的四则运算种类(输入1为整数,输入2为真分数):";
102         cin >> n;
103         cout << endl;
104         if (n == 1)
105         {
106             DealInt(m, a);
107             cout << endl;
108         }
109         else
110         {
111             DealFenshu(m, b);
112             cout << endl;
113         }
114         cout << "是否继续生成运算题(生成请输入‘1’,否则输入‘0’)" << endl;
115         cin >> p;
116         cout << endl;
117     } while (1 == p);
118 }

四、运行结果截图

五、个人上课未完成的原因

  此次为第一次课堂练习,作业题目当堂布置,一开始没有思路。渐渐地在老师的引导下,有了一些头绪,虽然编写了一部分,但是还不是很完善。再就是自己的编程基础不是很好,所以不能及时完成老师课上布置的任务。在以后的软件工程学习中,我要再接再厉,争取在编程上有更大的进步。

原文地址:https://www.cnblogs.com/zhyying/p/5248251.html