zoukankan      html  css  js  c++  java
  • 个人项目-小学四则运算初版

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

    github地址:https://github.com/sizhanhe/-

    一、题目要求

    像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11

    扩展要求:

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

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


    二、设计思路

    编程语言:c语言

    工具:

    设计思路:主函数让用户输入要练习的题目数量;而后随机产生随机数和随即运算符并产生运算式;判别用户输入的结果是否与正确答案一致,提示输入值是否正确,答题继续。答题完毕后,统计错对情况给出判别数据。

    类。

    四、主要代码

        srand((unsigned int)time(NULL));
        for(i=1;i<=n;i++){
            lab1:
    
            //随机生成三个数
            oneNum = rand()%100;
            twoNum = rand()%100;
            threeNum = rand()%100;
    
            //随机生成运算符
            firstSymbol = rand()%4;
            secondSymbol = rand()%4;
    
            //判断运算符优先级
            if(firstSymbol < secondSymbol ){
                sum = operation(twoNum,threeNum,secondSymbol);
                sum = operation(oneNum,sum,firstSymbol);
            }else{
                sum = operation(oneNum,twoNum,secondSymbol);
                sum = operation(sum,threeNum,firstSymbol);
            }
    
            //看结果是否为负数,负数重新生成
            if(sum <= 0) goto lab1;
    
            //打印出题目
            printf("%d %c %d %c %d = ",oneNum,Symbol(firstSymbol),twoNum,Symbol(secondSymbol),threeNum,sum);
    
            //比对答案是否正确
            scanf("%f",&answer);
            if((int)(100*sum+0.5)/100 == (int)(100*answer+0.5)/100){
                printf("回答正确!!!
    ");
                right++;
            }else{
                printf("回答错误!!!正确答案是%.2f
    ",((100*sum+0.5)/100));
            }
        }
    
    /*
    函数名:opreation
    函数功能:进行+、-、*、/运算
    参数:a,b运算数,symbol运算符号
    返回值:运算结果 sum
    */
    float operation(int a,int b,int symbol){
        float sum;
    
        if(symbol == 0) sum = a+b;
        else if(symbol == 1) sum = a-b;
        else if(symbol == 2) sum = a*b;
        else sum = (float)a/(float)b;
    
        return (sum);
    }
    
    /*
    函数名:Symbol
    功能:将随机数转换为对应得运算符号
    参数:numSymbol
    返回值:symbol
    */
    char Symbol(int numSymbol){
        char symbol;
        if(numSymbol == 0) symbol = '+';
        else if (numSymbol == 1) symbol = '-';
        else if (numSymbol == 2) symbol = '*';
        else symbol = '/';
        return symbol;
    }
    

      


     五、运行结果


     六、个人软件过程耗时估计与统计表

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 5 15
     Estimate 估计这个任务需要多少时间 10 12
    Development 开发 25 30
    Analysis 需求分析 (包括学习新技术) 2 50
    Design Spec 生成设计文档 4 5
    Design Review 设计复审 3 3
    Coding Standard 代码规范 1 1
     Design 具体设计 10 12
     Coding 具体编码 10 50
    Code Review 代码复审 2 2
    Test 测试(自我测试,修改代码,提交修改) 1 1
    Reporting 报告 3 3
      测试报告 1 1
      计算工作量 2 3
      并提出过程改进计划 1 1
  • 相关阅读:
    防删没什么意思啊,直接写废你~
    绝大多数情况下,没有解决不了的问题,只有因为平时缺少练习而惧怕问题的复杂度,畏惧的心理让我们选择避让,采取并不那么好的方案去解决问题
    Java 模拟面试题
    Crossthread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on
    一步步从数据库备份恢复SharePoint Portal Server 2003
    【转】理解 JavaScript 闭包
    Just For Fun
    The database schema is too old to perform this operation in this SharePoint cluster. Please upgrade the database and...
    Hello World!
    使用filter筛选刚体碰撞
  • 原文地址:https://www.cnblogs.com/hesz/p/9790526.html
Copyright © 2011-2022 走看看