• 结对项目-四则运算 “软件”之升级版


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

    GitHub远程地址:https://github.com/HJIALIN0/HJL

    一、基本要求

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

            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 yunsuan(void);
    float jiafa(float a,float b);
    float jianfa(float a,float b);
    float chenfa(float a,float b);
    float chufa(float a,float b);
    float jisuan(int i,float a,float b);
    char yunsuanfu(int i);

    void yunsuan()
    {
    float answer;
    float x,y,z;
    int a,b,c;
    int j,k;
    char op1,op2;
    srand((unsigned)time(NULL));//产生随机数
    do{

    a=rand()%99+1;
    b=rand()%99+1;
    c=rand()%99+1;
    j=rand()%4+1;
    k=rand()%4+1;
    if(j>1){
    y=(float)a;
    z=(float)b;
    x=jisuan(j,y,z);
    y=x;
    z=(float)c;
    x=jisuan(k,y,z);
    }
    else
    {
    if(k<2)
    {
    y=(float)a;
    z=(float)b;
    x=jisuan(j,y,z);
    y=x;
    z=(float)c;
    x=jisuan(k,y,z);
    }
    else
    {
    y=(float)b;
    z=(float)c;
    x=jisuan(k,y,z);
    y=(float)a;
    z=x;
    x=jisuan(j,y,z);
    }
    }
    }while(x<0.0);
    op1=yunsuanfu(j);
    op2=yunsuanfu(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("O(∩_∩)O哈哈~~~~答对了,真棒! ");
    }
    else
    {
    printf("o(T﹏T)o呜呜~~~~答错了! 正确答案是:%.1f ",x);//结果带有一位小数的
    }
    }
    else
    {
    if((x-answer)<0.01)
    {
    printf("O(∩_∩)O哈哈~~~~答对了,真棒! ");
    }
    else
    {
    printf("-o(T﹏T)o呜呜~~~~答错了! 正确答案是:%.1f ",x);
    }
    }

    }


    float jisuan(int i,float a,float b)//产生算术式的函数
    {
    float x;
    switch(i)
    {
    case 0:
    x=jiafa(a,b);
    break;
    case 1:
    x=jianfa(a,b);
    break;
    case 2:
    x=chenfa(a,b);
    break;
    case 3:
    x=chufa(a,b);
    break;
    default:
    break;
    }
    return x;
    }
    float jiafa(float a,float b)
    {
    float x;
    x=a+b;
    return x;
    }
    float jianfa(float a,float b)
    {
    float x;
    x=a-b;
    return x;
    }
    float chenfa(float a,float b)
    {
    float x;
    x=a*b;
    return x;
    }
    float chufa(float a,float b)
    {
    float x;
    x=a/b;
    return x;
    }
    char yunsuanfu(int i)
    {
    char op;
    switch(i)
    {
    case 0:
    op='+';
    break;
    case 1:
    op='-';
    break;
    case 2:
    op='*';
    break;
    default:
    op='/';
    break;
    }
    return op;
    }

    void main()
    {
    int i=0,timushu;//n为用户输入的题目数
    printf("--------------------------------------- ");
    printf("*******欢迎来到hjl的四则运算系统******* ");
    printf("--------------------------------------- ");
    printf("(#^—^#)请输入想要的题目个数:");
    scanf("%d",&timushu);
    do{
    yunsuan();
    i++;
    }while(i<timushu);
    system("pause");
    }

    六、运行结果截图

    七、总结

    本次实验没能充分按照老师的要求,这次实验要求结对进行,由于我的基础知识还不够很多地方都还学习的不够所以暂无结对对象,这次作业也很努力的去做了,但是发现自身方面还是有很多的不足需要去改善学习,所以还是只能用C来做,做得也很简单。主要在算法和设计界面上上面还是有缺陷,和对java的学习的不够,希望通过后期的学习能够补回来,跟上同学们的步伐。

  • 相关阅读:
    【SQL Server学习笔记】Service Broker创建异步的、数据驱动的消息应用程序
    记录几句不错的话
    DBA最缺的不是技术
    小数点引起的数据类型转换问题
    hdu 3062 2SAT最基础题
    POJ 1679 判断最小生成树是否唯一
    POJ 1459 构图+最大流(Edmond_karp模版)
    POJ 3522 最大边与最小边差值最小的生成树
    POJ 1659 根据度序列构图
    POJ 1273 求最大流(Edmond_karp模板题)
  • 原文地址:https://www.cnblogs.com/hujialin/p/9846071.html
Copyright © 2020-2023  润新知