zoukankan      html  css  js  c++  java
  • 菜鸟学IT之简易四则运算程序开发

    作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166

    1. 作业要求:

           任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:

    23 - 3 * 4 = 11

    扩展要求:

    1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

    2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

     

     

    2.个人软件过程耗时估计与统计表(时间以小时为单位)

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 6 8
    · Estimate 估计这个任务需要多少时间 12 8
    Development 开发 8 6
    · Analysis 需求分析 (包括学习新技术) 0 0
    · Design Spec 生成设计文档 0 0
    · Design Review 设计复审 0 0
    · Coding Standard 代码规范 1 0.5
    · Design 具体设计 0 0
    · Coding 具体编码 3 2
    · Code Review 代码复审 0 0
    · Test 测试(自我测试,修改代码,提交修改) 1 0.5
    Reporting 报告 0 0

    在这次代码联系上没有规范性的按照统计表要求执行,没有效率可言(这需要提高)。四则运算的运算也没有使用高级的算法进行计算,代码也比较冗余重复。但基本内容都能够实现。

    3.代码详解:

    • 通过使用C语言自带的rand()函数产生随机数的一个随机整数与运算符,进行题目的打印:
    /*函数功能:生成一个1-10的随机整数*/
    int CreateRandomNumber()
    {
        return rand()%100+1;
    }
    /*函数功能:随机生成一个运算符号(+,-,*,/)*/
    char CreateRandomOperator()
    {
        int op;
        op=rand()%4+1;
        switch(op)
        {
        case 1:
            return '+';
        case 2:
            return '-';
        case 3:
            return '*';
        case 4:
            return '/';
        }
        return 0;
    }
    • 通过goto语句删除答案为负数的题目:当userAnswer答案小于零时,重新随机生成数据。
    loop:   a=CreateRandomNumber();              
               /*产生一个随机数赋值给整型变量a*/
                b=CreateRandomNumber();              
            c=CreateRandomNumber();  
                /*产生一个随机运算符赋值给字符变量opChar*/          
                opChar=CreateRandomOperator();      
            opChar2=CreateRandomOperator();
                
        userAnswer=Calculate(a,opChar,b,opChar2,c);
        if(userAnswer<0)
            goto loop;
    • 通过比较abc的值进行真分数的输出:
    if(opChar2=='/'&& b<c){
                    q = b;
                    b = c;
                    c = q;
                }
    if(opChar=='/'&& a<b){
                    q = a;
                    a = b;
                    b = q;
                }
    if(opChar2=='/'&& b<c){
                    q = b;
                    b = c;
                    c = q;
                }

    3.运行截图

    4.总结

           这次的代码撰写比较简单,但随着扩展要求的增加代码的复杂度与代码量也逐渐增加,难度也大大加强。但是经过舍友的解答后,运算思路也逐渐清晰起来也完成了老师的题目的要求,但这次的代码还是不够完美,运算规则也不够完善需要后期继续优化。通过这次的实验我了解到每一个项目的开发初始时可能是一个小小的要求几行代码就可以解决了,但随着扩展要求的增多就变成了一个大项目、大工程。

    源码GitHub地址:https://github.com/JGaoLin/MyWork

  • 相关阅读:
    关联规则挖掘算法综述
    Python中*args 和**kwargs的用法
    VIM python 自动补全插件:pydiction
    Java设计模式--工厂模式
    Java设计模式--单列设计模式
    Java设计模式--UML类图类的关系(依赖,泛化, 实现,关联,聚合,组合)
    Java设计模式--设计模式七大原则
    SpringBoot 整合篇 笔记--Spring Boot与监管/热部署
    SpringBoot 整合篇 笔记--Spring Boot与分布式
    SpringBoot 整合篇 笔记--Spring Boot与任务/安全
  • 原文地址:https://www.cnblogs.com/JGaoLin/p/9747496.html
Copyright © 2011-2022 走看看