第四次作业:个人项目-小学四则运算 “软件”之初版

本次作业要求来自: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

 

posted on 2018-10-15 11:53  zllll  阅读(228)  评论(1编辑  收藏  举报