• 四则运算升级


    作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

    GitHub远程地址:https://github.com/Tily288/Tily

    一、基本要求

    从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

            1.自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。

            2.用户可以输入答案

            3.若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

    二、扩展方向

    1. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66(保留两位小数功能实现,不支持出带括号题目)
    2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(实现)

    三、时间记录表

    PSP2.1 Personal Software Process Stages 预估时间(h) 实际时间(h)

    Planning

    计划 10 9
    Estimate 估计这个任务需要多少时间 10 15
    Development 开发 80 100
    Analysis 需求分析 (包括学习新技术) 1 1
    Coding Standard 代码规范 2 3
    Design 具体设计 6 3
    Coding 具体编码 28 36
    Code Review 代码复审 4 5
    Test 测试(自我测试,修改代码,提交修改) 11 5

    四、开发环境调试:Visual C++

    五、代码呈现

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include <stdlib.h>
    void operation(void);
    float plus(float a,float b);
    float minus(float a,float b);
    float multiply(float a,float b);
    float divide(float a,float b);
    float caculate(int i,float a,float b);
    char Operator(int i);
    void main()
    {
        int i=0,n;
        printf("你想要输入的运算题目数为:");
        scanf("%d",&n);
        do{
            operation();
            i++;
        }while(i<n);
        system("pause");
    }
    void operation()
    {
        float answer;
        float x,y,z;
        int a,b,c;
        int j,k;
        char op1,op2;
        srand((unsigned)time(NULL));
        do{
            a=rand()%100;
            b=rand()%100;
            c=rand()%100;
            //0,1为加减 2,3为乘除
            j=rand()%4;
            k=rand()%4;
            if(j>1){
                y=(float)a;
                z=(float)b;
                x=caculate(j,y,z);
                y=x;
                z=(float)c;
                x=caculate(k,y,z);
            }
            else
            {
                if(k<2)
                {
                    y=(float)a;
                    z=(float)b;
                    x=caculate(j,y,z);
                    y=x;
                    z=(float)c;
                    x=caculate(k,y,z);
                }
                else
                {
                    y=(float)b;
                    z=(float)c;
                    x=caculate(k,y,z);
                    y=(float)a;
                    z=x;
                    x=caculate(j,y,z);
                }
            }
        }while(x<0.0);
        op1=Operator(j);
        op2=Operator(k);
        printf("%d %c %d %c %d = ",a,op1,b,op2,c);
        scanf("%f",&answer);
        if(j==3&&k==3)
        {
            if((answer-x)<0.01)
            {
                printf("恭喜你,答对啦!
    ");
            }
            else
            {
                printf("很遗憾,你答错了!正确答案是:%.1f
    ",x);
            }
        }
        else
        {
            if((x-answer)<0.01)
            {
                printf("恭喜你,答对啦!
    ");
            }
            else
            {
                printf("很遗憾,你答错了!正确答案是:%.1f
    ",x);
            }
        }
    }
    float caculate(int i,float a,float b)      //当它是哪种符号就进行哪个计算
    {
        float x;
        switch(i)
        {
        case 0:
            x=plus(a,b);
            break;
        case 1:
            x=minus(a,b);
            break;
        case 2:
            x=multiply(a,b);
            break;
        case 3:
            x=divide(a,b);
            break;
        default:
            break;
        }
        return x;
    }
    float plus(float a,float b)
    {
        float x;
        x=a+b;
        return x;
    }
    float minus(float a,float b)
    {
        float x;
        x=a-b;
        return x;
    }
    float multiply(float a,float b)
    {
        float x;
        x=a*b;
        return x;
    }
    float divide(float a,float b)
    {
        float x;
        x=a/b;
        return x;
    }
    char Operator(int i)   //运算符
    {
        char fh;
        switch(i)
        {
        case 0:
            fh='+';
            break;
        case 1:
            fh='-';
            break;
        case 2:
            fh='*';
            break;
        default:
            fh='/';
            break;
        }
        return fh;
    }

    六、运行结果截图

    七、总结

            这次项目没能按老师要求完成,由于自己的基础不够扎实,很多地方无法完成,为了不拖其他同学后腿所以自己完成了本次作业,并没能把升级版做出来,很多地方都没有完善,希望自己在学习中发现自己的不足努力前进,为以后结对能不拖人后退。

  • 相关阅读:
    【NodeJS】---express配置ejs mongoose route等
    【CSS3】---层模型position之fixed固定定位、absolute绝对定位和relative相对定位
    【CSS3】---:before :after生成内容
    px转rem的填坑之路
    markdown编写文件目录结构
    js reduce数组转对象
    处理Promise.reject()
    js事件循环
    为什么[] == false 为true
    为什么不建议用var
  • 原文地址:https://www.cnblogs.com/Tily/p/9846334.html
Copyright © 2020-2023  润新知