• 软件工程个人作业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 }

    四、运行结果截图

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

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

  • 相关阅读:
    swift知识点 [1]
    Scala的安装,入门,学习,基础
    导入别人的项目源码,如何才可以正常运行呢???
    java.io.IOException: Could not locate executable nullinwinutils.exe in the Hadoop binaries.
    网站点击流数据分析项目----之现学现卖
    我的博客即将搬运同步至腾讯云+社区
    sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
    工作流调度器azkaban(以及各种工作流调度器比对)
    日志采集框架Flume以及Flume的安装部署(一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统)
    Hive thrift服务(将Hive作为一个服务器,其他机器可以作为客户端进行访问)
  • 原文地址:https://www.cnblogs.com/zhyying/p/5248251.html
Copyright © 2020-2023  润新知