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
  • 相关阅读:
    一次性删除 .svn 文件夹
    vim
    03 练习题:字符串
    04 练习题:元组、列表
    05 练习题:字典
    Python基础学习笔记(07)基础类型操作及转化、编码
    Python基础学习笔记(06)代码块、集合、深浅copy
    Python基础学习笔记(05)字典
    Python基础学习笔记(04)列表、元组
    67.滚轮事件
  • 原文地址:https://www.cnblogs.com/hesz/p/9790526.html
Copyright © 2011-2022 走看看