实验二 结对编程 第二阶段

一、实验目标
 (1)体验敏捷开发中的两人合作。

 (2)进一步提高个人编程技巧与实践。

二 、实验内容

 (1)根据以下问题描述,练习结对编程(pair programming)实践;

 (2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

 (3)要求在结对编程工作期间,两人的角色至少切换 4 次;

 (4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

      实验分析:

      问题:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。

      规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。

      要求:总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分。

     实验内容应该包括:

     1、代码规范
     2、程序的总体设计(附图说明模块之间的关系)
     3、程序结对编程过程(附图)及功能实现情况(附代码和图)
     4、项目github地址(附图)
     5、实验总结

三、实验过程

      1、代码规范

      本次实验采用C语言实现,实验前查找了有关C语言的相关代码规范。

      程序块要采用缩进风格编写,缩进的空格数为4个
      相对独立的程序块之间、变量说明之后必须加空行
      较长的语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当缩进,使排版整齐,语句可读。
      不允许把多个短语句写在一行中,即一行只写一条语句。
      if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
      对齐只使用空格键,不使用TAB键。
      函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
      一行程序以小于80字符为宜,不要写得过长。

      此外,还有注释规范,函数,标识符等规范。

      参考资料:https://blog.csdn.net/qq_39759656/article/details/82289019

      2、程序的总体设计

      问题:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。

      规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。

      要求:总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分。

      本次实验使用C语言操作,先进行了变量的定义,包括操作数、运算符等,之后循环输出运算式。

      用户根据屏幕显示的运算式进行计算并输入结果,程序判断对错。10道题目完成后,统计结果。

      程序流程图:

                     实验二 结对编程 第二阶段_第1张图片 

       3、程序结对编程过程及功能实现情况

     (1)结对编程的过程

       我们先进行了讨论,决定使用C语言为编程工具,最后一起研究了实验的需求,讨论了代码各模块的具体运行

       最后采用在线讨论和远程控制,一起完成实现了程序的编写。

               实验二 结对编程 第二阶段_第2张图片

      (2)功能实现

        实验截图

        实验二 结对编程 第二阶段_第3张图片

 

       源代码

      #include
      #include

      int main()
      {
      int a,b,m,n; //a,b为操作数,m为运算结果,n为用户输入结果
      char c; //c为四则运算操作
      int i,sum=0; //i为题目数量,sum为正确数目
      srand(time(0)); //初始化随机数发生器

      //**主界面显示
      printf("\n 亓帅 & 王旭 \n");
      printf(" ********************欢迎使用小学四则运算********************\n\n");

      //**生成随机题目
      for(i=0;i<10;i++)
      {
      a=rand()%100+1;
      b=rand()%100+1;
      c=rand()%4; //0+,1-,2×,3÷

      printf(" 第%d题:",i+1);
      switch(c)
      {
      case 0: //约束和
      while((m=a+b)>100)
      {
      a=rand()%100+1;
      b=rand()%100+1;
      }
      printf("%d + %d = ",a,b);
      break;
      case 1: //约束差
      while(a>100||b>100)
     {
      a=rand()%100+1;
      b=rand()%100+1;
      }
      if(a
      {
      m=a;
      a=b;
      b=m;
       }
      m=a-b;
      printf("%d - %d = ",a,b);
      break;
      case 2: //约束积
      while((m=a*b)>100)
      {
      a=rand()%100+1;
      b=rand()%100+1;
      }
      printf("%d × %d = ",a,b);
      break;
      case 3: //约束商
      while(a>100||b>100||(a*b==0))
      {
      a=rand()%100+1;
      b=rand()%100+1;
      }
      if(a
      {
      m=a;
      a=b;
      b=m;
      }
      a=(a/b)*b;
      m=a/b;
      printf("%d ÷ %d = ",a,b);
      break;
      }

      //**用户输入计算结果
      scanf("%d",&n);
      if(m==n)
      {
      sum++;
      printf(" 正确\n");
      }
      else
      printf(" 错误\n");
      }

      //**结果统计
      printf("\n 答对 %d 题,得分:%d",sum,sum*10);
      if(sum == 10)
      printf(" 恭喜你取得满分!!! GREAT ");
      else if(sum>=60 & sum<100)
      printf(" 成绩不错,继续保持!");
      else
      printf(" 再接再厉,给自己加加油吧!");
      printf("\n\n ");
      return 0;
      }

      4、项目github地址

      源仓库的地址为:https://github.com/3170701304wx/sizeyunsuan

      仓库截图:

      实验二 结对编程 第二阶段_第4张图片

      5、实验总结

      本次实验让我明白了结对编程的操作,以及结对编程的意义。通过团队的合作,进行代码的构思,以及程序的编写,大大提高了编程的效率和容错率。

      实验采用了C语言进行操作,使我对C语言的规范以及C语言的应用有了进一步的掌握。

      感谢我的队友,以及同学的帮助,相信在之后的实验中,我将会更好的发挥。

 

你可能感兴趣的:(实验二 结对编程 第二阶段)