第三次作业(周静 李盼)

 

  --题目:

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

 

  --需求分析:

  • 编写小学四则运算的测试系统,该系统能完成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("欢迎进入四则运算测试系统!\n");
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\n",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

                     

                                                                                                     小组成员:周静  李盼

 

posted @ 2015-04-22 21:41  李盼1  阅读(192)  评论(1编辑  收藏  举报