zoukankan      html  css  js  c++  java
  • 第四次作业:个人项目-小学四则运算 “软件”之初版

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

    远程github库:https://github.com/1457668432/Zll2

     

    一、题目要求

    像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。

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

    23 - 3 * 4 = 11

    扩展要求:

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

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

    二、功能设计

    工具:CodeBlocks

    语言:C语言

    1、根据输入的数字输出相应数目的随机四则运算题目;

    2、用户输入答案并判断输入答案是否正确;

    3、输出相应判定结果和运算结果;

    三、主要代码

        int N;
        printf("请输入习题数量:");
        scanf("%d",&N);
        N=N-1;
        int num1, num2, num3, count=0, result,resultTrue,flag;
        char op1, op2;
        srand(time(NULL)); 
        do
        {
            count++;
            num1 = rand() % 10+1;
            num2 = rand() % 10+1;
            num3 = rand() % 10+1;
            switch (num1 % 4)
            {
            case 0:
                op1 = '+';
                break;
            case 1:
                op1 = '-';
                break;
            case 2:
                op1 = '*';
                break;
            case 3:
                op1 = '/';
                break;
            default:
                break;
            }
            switch (num2 % 4)
            {
            case 0:
                op2 = '+';
                flag = 0;
                break;
            case 1:
                op2 = '-';
                flag = 0;
                break;
            case 2:
                op2 = '*';
                if((op1=='*')||(op1=='/')) flag = 0;
                else flag = 1;
                break;
            case 3:
                op2 = '/';
                if((op1=='*')||(op1=='/')) flag = 0;
                else flag = 1;
                break;
            default:
                break;
            }
            printf("%d %c %d %c %d = ",num1,op1,num2,op2,num3);
            if(flag==0)
            {
                resultTrue = 0;
                switch (op1)
                {
                case '+':
                    resultTrue = num1+num2;
                    break;
                case '-':
                    resultTrue = num1-num2;
                    break;
                case '*':
                    resultTrue = num1*num2;
                    break;
                case '/':
                    resultTrue = num1/num2;
                    break;
                default:
                    break;
                }
                switch (op2)
                {
                case '+':
                    resultTrue += num3;
                    break;
                case '-':
                    resultTrue -= num3;
                    break;
                case '*':
                    resultTrue *= num3;
                    break;
                case '/':
                    resultTrue /= num3;
                    break;
                default:
                    break;
                }
            }
            else
            {
                resultTrue = 0;
                switch (op2)
                {
                case '+':
                    resultTrue = num2+num3;
                    break;
                case '-':
                    resultTrue = num2-num3;
                    break;
                case '*':
                    resultTrue = num2*num3;
                    break;
                case '/':
                    resultTrue = num2/num3;
                    break;
                default:
                    break;
                }
                switch (op1)
                {
                case '+':
                    resultTrue = num1 + resultTrue;
                    break;
                case '-':
                    resultTrue = num1 - resultTrue;
                    break;
                case '*':
                    resultTrue = num1 * resultTrue;
                    break;
                case '/':
                    resultTrue = num1 / resultTrue;
                    break;
                default:
                    break;
                }
            }
            scanf("%d",&result);
            if (result == resultTrue)
                printf("结果正确!
    ");
            else
                printf("结果错误!正确答案为:%d 
    ",resultTrue);
    
        }
        while(count<=N);
    

     

    四、运行结果

    五、耗时表

    psp2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 10 10
    Estimate 估计这个任务需要多少时间 10 15
    Development 开发 110 100
    Analysis 需求分析 (包括学习新技术) 12 15
    Design Spec 生成设计文档 1 1
    Design Review 设计复审 8 5
    Coding Standard 代码规范 5 5
    Design 具体设计 15 20
    Coding 具体编码 40 45
    Code Review 代码复审 10 8
    Test 测试(自我测试,修改代码,提交修改) 12 8
    Reporting 报告 8 12
    . 测试报告 2 2
    . 计算工作量 8 6
    . 提出过程改进计划 0 0
  • 相关阅读:
    用户体验评价
    星辰小队针对于软件“星遇”的第二次10天冲刺——第4天
    星辰小队针对于软件“星遇”的第二次10天冲刺——第3天
    周周总结——时时更新(第4学期,第14周)
    星辰小队针对于软件“星遇”的第二次10天冲刺——第2天
    星辰小队针对于软件“星遇”的第二次10天冲刺——第1天
    星辰小组——第一阶段评分+各小组的意见反馈
    周周总结——时时更新(第4学期,第13周)
    规划极限编程阅读笔记02
    周周总结——时时更新(第4学期,第12周)
  • 原文地址:https://www.cnblogs.com/zl1216/p/9790190.html
Copyright © 2011-2022 走看看