第四次作业:个人项目-小学四则运算 “软件”之初版
本次作业要求来自: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("结果正确!\n");
        else
            printf("结果错误!正确答案为:%d \n",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 | 
                    
                
                
            
        
浙公网安备 33010602011771号