• 第三次作业(周静 李盼)


      --题目:

    • 请编写一个能自动生成小学四则运算题目的软件;
    • 让程序能接受用户输入答案,并判定对错;
    • 最后给出总共 对/错的数量。

      --需求分析:

    • 编写小学四则运算的测试系统,该系统能完成100以内的加、减、乘、除运算;
    • 该系统能接受用户输入答案,并能自动判断对错;
    • 当对用户输入的答案进行判断时,对错误的题目给出正确的答案;
    • 在答题结束后,能自动输出用户答的总题数、答对题数、答错题数及所得分数。

      --扩展功能:

           1、四则运算中,除法保留两位小数;

           2、还可以出表达式里含有负数的题目,形如2.00/(-6.00)=-0.33。

      --对题目要求的分析:

           1、修改原程序,使之符合 “代码风格和设计规范”的基本要求;

           2、请采用模块化设计思想,修改之前的code,将 “计算功能” 封装起来;

           3、并在C语言环境下对该程序进行封装,可将函数声明与具体实现分别存放在头文件(.h)和源文件(.c)中;

           4、在第二次关于整型数的四则运算的基础上编写一个程序,可以实现含有负数,并能得出小数结果的四则运算。

      --设计:

           用一个主函数main(),while循环中调用函数run()统计做对的题目的个数;

           用子函数 int run()产生随机数;

           用子函数float n_input()产生浮点数的随机数,当中的 float t; t=rand()%100/10; k=rand()%2;可以实现四舍五入,保留两位小数;

           用子函数void counts()产生计算功能。

      --代码实现:

        .cpp文件

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 #include "1.h"
     5 
     6 main()
     7 {
     8     
     9     srand(time(NULL));
    10     int k=10;
    11     int t;
    12     int right=0;
    13     printf("欢迎进入四则运算测试系统!
    ");
    14     while(k--)
    15     {
    16         if(run()==1)
    17             right++;
    18     }
    19     printf("10道题您作对了%d道",right);
    20 }
    21 
    22 int run()
    23 {
    24     float sum1;
    25     srand(time(NULL));
    26     a=n_input();
    27     c=ch[rand()%4];
    28     b=n_input();
    29     if(b>=0)
    30     {
    31         printf("%0.2f%c%0.2f=",a,c,b);
    32     }
    33     else
    34     {
    35         printf("%0.2f%c(%0.2f)=",a,c,b);
    36     }
    37     counts();
    38     //sum=(int)(sum*100+0.5)/100;
    39     scanf("%f",&sum1);
    40     printf("right = %0.2f
    ",sum);
    41     if(sum==sum1)
    42     {
    43         return 1;
    44     }
    45     else 
    46     {
    47         return -1;
    48     }
    49 }
    50 
    51 float n_input()
    52 {
    53     int k;
    54     float t;
    55     t=rand()%100/10;
    56     k=rand()%2;
    57     if(t==0)
    58     {
    59         return t;
    60     }
    61     else if(k==0)
    62     {
    63         return  -t;
    64     }
    65     else 
    66     {
    67         return t;
    68     }
    69 }
    70 
    71 void counts()
    72 {
    73     switch(c)
    74     {
    75     case '+':
    76         sum=a+b;
    77         break;
    78     case '-':
    79         sum=a-b;
    80         break;
    81     case '*':
    82         sum=a*b;
    83         break;
    84     case '/':
    85         if(b!=0)
    86         {
    87             sum=a/b;
    88         }
    89         else
    90         {
    91             run();
    92         }
    93         break;
    94         
    95     }
    96 }


       .h文件

    #include<stdio.h>
    #include<stdlib.h>
    
    float a,b;
    float sum;
    char ch[4]={'+','-','*','/'};
    char c;
    
    
    int run();
    float n_input();
    void counts();

      .h  文件:

    void counts()
    {
        switch(c)
        {
        case '+':
            sum=a+b;
            break;
        case '-':
            sum=a-b;
            break;
        case '*':
            sum=a*b;
            break;
        case '/':
            if(b!=0)
            {
                sum=a/b;
            }
            else
            {
                run();
            }
            break;
            
        }
    }


      --运行结果:

         

      --代码规范设计和风格讨论:

           代码风格的原则:简明、易读、无二义性

           注意缩进、括号对应、不把多条语句放在一行。

     

        --两人的合作步骤:

            1、在做作业之前两人先各自看4.1和4.2的内容

            2、两人一起讨论对程序做哪些方面的改进,功能需求分析及设计

            3、讨论之后两人开始编程,一人按之前拟定的方案编程,一人在旁边检查,看看代码是否符合规范,还有是否有编写错误等小细节错误

            4、完成代码编写后进行调试,之后两人一起检查错误,讨论并改正。

            5、对代码进行复审

        --总结:

            1、这次作业需要对题目进行分析,锻炼我们的分析解决问题的能力,让我们知道分析的重要性;

            2、在编写程序时出现许多错误,这需要我们两人合作解决错误,让代码得以完善;

            3、这次作业也让我们体会到了合作的重要性。

         -- PSP耗时:    

    步骤

    耗时(小时)

    百分比

    查看资料

    6

    0.25

    需求分析

    2

    0.08

    设计

    4

    0.17

    拟定方案

    1

    0.04

    编写代码

    5

    0.21

    调试复审

    5

    0.21

    进行封装

    1

    0.04

                         

                                                                                                         小组成员:周静  李盼

  • 相关阅读:
    js正则 转载
    asp.net中打开新窗口的多种方法(转载)
    ajax有两种提交数据的方式,分别为get和post(转)
    DropDownList 绑定(转载)
    CentOS网络配置
    Java内存区域-- 运行时数据区域
    Spring Ioc--Bean装配
    Spring--Spring容器
    java正则表达式 --简单认识
    Leetcode 402:移除K个数字
  • 原文地址:https://www.cnblogs.com/lpzm/p/4448658.html
Copyright © 2020-2023  润新知