zoukankan      html  css  js  c++  java
  • 四则运算

    题目

    写一个能自动生成小学四则运算题目的命令行"软件",分别满足下列各种需求。下面这些需求都可以用命令行参数的形式来指定:

    A)除了整数以外,还支持真分数的运算。(例如1/6+1/8=7/24)。

    B)让程序能接受用户输入的答案,并判断对错。最后给出总对/错的数量。

    C)逐步扩展功能和可以支持的表达式类型,最后希望能支持下面类型的题目(最多10个运算符,括号的数量不限制):

          25-3*4-2/2+89=?          1/2+1/3-1/4=?      (5-4)*(3+28)=?

    D)一次可以批量出100道以上的题目,保存在文本文件中,并且保证题目不能重复,(1+2)和(2+1)是重复的题目,怎么保证题目不能重复呢,请看详细题目要求。

    和同学们比较一下各自程序的功能、性能、实现方法的异同等等。

    解:首先接到这个题目的时候,我还比较开心的。因为我之前做过类似的题目,即计算器的MFC的应用。所以,这道题对于我来说难度还是一般的。但是其中的一些细节问题我处理的不是很好,我放弃了MFC设计方案,转为结构化程序的编辑。

    第一:解题。这是一个四则运算的题目。其中包括随机数和随机运算符的生成、对其进行计算、列出题目、回答正确和错误的打印信息。

    第二:写代码。这里我只列出了回答正确打印信息的代码,主要是自己代码写的不是很漂亮,还需要进一步地加强。

    void correctPrint(int number)

    {switch(num)

        {case 1:

            printf("You're right! ");break;

        case 2:

            printf("It's OK! ");break;

        case 3:

            printf("Correct! ");break;

        case 4:

            printf("Perfect! ");break;

        case 5:

            printf("Good! ");break;

        default:

            printf("Powerful! ");break;

        }

    }

    第三:以下是我参考的一些文献,我看了之后有了想法。

    程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。

    第四:生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。生成的题目中如果存在形如e1 ÷e2的子表达式,那么其结果应是真分数。每道题目中出现的运算符个数不超过3个。

    第五:生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下: 1. 四则运算题目1 2. 四则运算题目2 …… 其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。

  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/dixinfusheng/p/5448399.html
Copyright © 2011-2022 走看看