zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成

    码市地址:https://git.coding.net/cholin/Task.git

     

    一、题目要求:

    写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

    1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

    2.运算符为 +, −, ×, ÷

    3.并且要求能处理用户的输入,并判断对错,打分统计正确率。

    4.要求能处理用户输入的真分数, 如 1/2, 5/12 等

    5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目:Myapp.exe -n 10

    二、需求分析:

    1、自动随机生成加减乘除四则运算;

    2、四则运算包括整数和真分数的运算;

    3、控制生成题目的个数;

    4、能生成正确答案;

    5、能统计答题正确数与正确率。

    三、个人软件过程耗时估计与统计表:

    PSP2.1

    Personal Software Process Stages

    Time (%) Senior Student

    Time (%)

    Planning

    计划

    10

    8

    · Estimate

    估计这个任务需要多少时间

    10

    12

    Development

    开发

    10

    12

    · Analysis

    需求分析 (包括学习新技术)

    12

    5

    · Design Spec

    生成设计文档

    5

    4

    · Design Review

    设计复审

    4

    4

    · Coding Standard

    代码规范

    2

    4

    · Design

    具体设计

    10

    8

    · Coding

    具体编码

    12

    12

    · Code Review

    代码复审

    5

    4

    · Test

    测试(自我测试,修改代码,提交修改)

    8

    10

    Reporting

    报告

    4

    5

    测试报告

    5

    4

    计算工作量

    3

    2

    并提出过程改进计划

    3

    2

    四、主要代码:

    ①主要函数:

    char getSignal();                      //获取随机运算符函数
    int random(double,double);             //获取随机数函数
    int getResult(int,int,char);           //结果计算函数
    int takeTest();                        //题目生成函数

    ②主函数

    void main() 
    {
             int n,a,right=0;
             double percent;
             printf("Please enter the number of the test:");
             scanf("%d",&n);
             for(int i=0;i<n;i++)
             {
                       a=takeTest();
                       right=right+a;
             }
             printf("Powerful!
    ");
             printf("The number of right:%d
    ",right);
             percent=((double)right*100.00)/(double)n;
             printf("The percent of right:%0.2f %%
    ",percent);
    }

    ③获取随机运算符函数:

    char getSignal()
    {
        char signal[4]={'+','-','*','/'};
        srand((unsigned)time(NULL));
        return signal[rand()%4];
    }

     ④获取随机数函数:

    int random(double start, double end)
    {
        return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
    }

    ⑤结果计算函数:

    int getResult(int num1,int num2,char signal)
    {
        int res;
        switch(signal)
        {
        case '+':
            res=num1+num2;break;
        case '-':
            res=num1-num2;break;
        case '*':
            res=num1*num2;break;
        case '/':
            res=num1/num2;break;
        default:
            printf("运算符错误!
    ");
        }
        return res;
    }

    ⑥题目生成函数:

    int takeTest()
    {
        int get;
        int num1,num2,a;
        char signal;
    
        srand((unsigned)time(NULL));
        signal=getSignal();
        num1=random(0,1000);
        num2=random(1,1000);
    if(signal=='-') { if(num1<num2) { int temp; temp=num1; num1=num2; num2=temp; } } if(signal=='/') { if(num2==0) { int temp; temp=num1; num1=num2; num2=temp; } } printf("%d%c%d=",num1,signal,num2); scanf("%d",&get); fflush(stdin); //清空输入缓冲区 if(getResult(num1,num2,signal)==get) { printf("You're right! "); a=1; } else { printf("It's wrong! "); printf("The right answer is: %d ",getResult(num1,num2,signal)); a=0; } return a; }

    五、运行结果:

     

    六、自我评测:

        本程序由c语言编写而成,在Visual C++6.0版本的编译器上测试执行成功。可实现:自动随机生成加减乘除四则运算、控制生成题目的个数、统计答题正确数与正确率的功能。很遗憾未能实现要求的对分数的运算处理。查阅了一些资料也找同学请教了,奈何基础有点差加上时间太赶所以还是没弄懂。另外电脑安装GIT一到最后一步就出错,安装不上不知道是什么原因。

    ===============================================【晴昼秋岚,皆入我襟怀。 只岁暮天寒 ,独对江清月白。 谢此际春风,待我慷慨。 回眸处,一川青黛。 你随缱绻烟霞而来。】================================================
  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/cholin/p/6516667.html
Copyright © 2011-2022 走看看