• 个人项目-小学四则运算初版


    作业要求来源: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
  • 相关阅读:
    VMWare安装Solaris虚拟机的网络设置
    PeopleTools预警程序制作
    listener.ora增加监听端口
    用.Net Mage工具更新WPF ClickOnce应用程序部署清单
    基本测试方法用例场景
    Qt Vs msvc debug版本没有问题但release版本出现异常
    Qt 打包release发布问题
    Qt 鼠标悬浮按钮上出现浮窗效果
    Qt 样式对于QPushbutton 增加 hover press release效果
    阿里云ECS无法通过SSL远程链接问题。
  • 原文地址:https://www.cnblogs.com/hesz/p/9790526.html
Copyright © 2020-2023  润新知