首页 > 编程语言 >结对编程——小学生四则运算

结对编程——小学生四则运算

时间:2023-04-09 17:23:32浏览次数:28  
标签:编码 结对 编程 题目 int 四则运算 实验 &&

一、实验准备

  本次实验的内容是结对编程,我和2152426一起组队完成这次实验。

  实验的具体题目是小学生四则运算,其具体要求如下:

  1. 多种实现方式(C/C++、C#/VB.net/Java等)
  2. 两个运算符,100 以内的数字,不需要写答案需要检查答案是否正确,并且保证答案在 0..100 之间
  3. 尽可能多的设置一些条件
  我们在语言上选择了c语言。由于实验课的时间并不是很充裕,我们尚有一大部分实验内容未完成,而为了更好的体验本次实验的意义以及减少沟通成本、提高实验效率,于是我们选择继续在课后线下面对面一起完成这次实验。

二、实验过程

  实验的流程我们采用的是他先编程,我在旁审核代码,再交换角色,我编程,他审核。我们小组选择在编码结束后,再提出审核意见,主要原因如下:1.不打断编码人的思路和节奏,提高实验效率2.审核人可以完整清晰的看到编码人的流程。

  1.首先是他进行完整编码,以下是他编写的代码及运行结果:

  源码:

#include<bits/stdc++.h>
using namespace std;
int  r[302], s[302];
int res[302];

int getRand(int a,int b);
int main(){
    for(int i =1;i<=75;i++){
        r[i]  = getRand(0,50);
        s[i] = getRand(0,50);
        res[i] = r[i] + s[i];
        printf("\t(%d)%d+%d = \t",i,r[i],s[i]);
        if(i%25 == 0){
            cout<<"\t"<<endl;
        }
    }
    for(int i = 76;i<=150;i++){
        r[i]  = getRand(0,100);
        s[i] = getRand(0,100);
        res[i] = r[i] - s[i];
        printf("\t(%d)%d-%d = \t",i,r[i],s[i]);
        if(i%25 == 0){
            cout<<"\t"<<endl;
        }
    }
    for(int i = 151;i<=225;i++){
        r[i]  = getRand(1,15);
        s[i] = getRand(0,20);
        res[i] = r[i] * s[i];
            printf("\t(%d)%d*%d = \t",i,r[i],s[i]);
        if(i%25 == 0){
            cout<<"\t"<<endl;
        }
    }
    for(int i = 226;i<=300;i++){
        r[i]  = getRand(0,30);
        s[i] = getRand(1,8);
        res[i] = r[i] / s[i];
            printf("\t(%d)%d/%d = \t",i,r[i],s[i]);
        if(i%25 == 0){
            cout<<"\t"<<endl;
        }
    }

    while(1){
        int n,i;
        cout<<"请输入题号(输入0退出程序!): ";
        cin>>n;
        if(n == 0){
            break;
        } 
        if(n >= 1 && n <= 75){
            printf("\t%d+%d = \t",r[n],s[n]);
        }else if( n>= 76 && n<=150){
            printf("\t%d-%d = \t",r[n],s[n]);
        }else if(n>= 151 && n<=225){
            printf("\t%d*%d = \t",r[n],s[n]);
        }else if(n>= 226 && n<=300){
            printf("\t%d/%d = \t",r[n],s[n]);
        }
        cout<<"请输入答案:";
        cin>>i;
        if(i == res[n]){
            cout<<"\t\t\t正确!"<<endl;
        } 
        else {
            cout<<"\t\t\t错误!"<<endl;
        } 
    }
}

int getRand(int a,int b){
    return (rand()%(b - a + 1)) + a;
} 

  运行及测试结果:

 

 

   2.我的审核建议及收获

  建议:

  从源码和运行及测试结果中可以看出,我的搭档很好的完成了题目的要求。而美中不足的有两点:1.对于题目中随机数字的范围存在一定的局限性,比如在加法中,他将两个随机加数的范围设置为[0,50],虽然这样很好的满足了题目所给的条件,最后的和不会大于100,但是却忽略了一个加数大于50,一个加数小于50,相加小于100的情况,这样使得用户小学生在练习题目时,对于这一数字范围内的运算得不到练习;2.程序输出时的排版设计的不够合理,会随着输出框的大小改变而改变。在上图中也可以看到,存在几行的排版异常。

  收获:

  同时,我也从他的整个编码流程中学习到了很多:1.良好的规划使得编码事半功倍。在开始编程前,他会先理清整个思路和流程,再根据自己的思路开始编码。刚开始我还嫌他准备工作理思路麻烦,这种简单的程序直接上手就好了,但当他理好思路开始编码后我才发现,他编码非常高效速度,出的错也很少。这也就让我意识到做好良好的准备工作的必要性。2.良好的书写代码习惯可以增加代码的可读性,方便阅读者理解,这一点可以从源码中看出来。

  改进:

  在收到我的审核意见后,我的搭档对源码进行了修改,得到如下改进运行结果:

  3.互换角色,以下是我进行的编码及运行结果:

  源码:

#include<bits/stdc++.h>
using namespace std;
int  r[302], s[302];
int res[302];
//函数声明 
int getRand(int a,int b);
void initial();
void add();
void subtract();
void multiply();
void divide();


int main(){
    initial();
}


//初始化 
void initial(){
    add();
    subtract();
    multiply();
    divide();
    while(1){
        int n,i;
        cout<<"请输入题号(输入0退出程序!): ";
        cin>>n;
        if(n == 0){
            break;
        } 
        if(n >= 1 && n <= 75){
            printf("\t%d+%d = \t",r[n],s[n]);
        }else if( n>= 76 && n<=150){
            printf("\t%d-%d = \t",r[n],s[n]);
        }else if(n>= 151 && n<=225){
            printf("\t%d*%d = \t",r[n],s[n]);
        }else if(n>= 226 && n<=300){
            printf("\t%d/%d = \t",r[n],s[n]);
        }
        cout<<"请输入答案:";
        cin>>i;
        if(i == res[n]){
            cout<<"\t\t\t正确!"<<endl;
        } 
        else {
            cout<<"\t\t\t错误!"<<endl;
        } 
    }
}
//生成随机数 
int getRand(int a,int b){
    return (rand()%(b - a + 1)) + a;
} 
//加法 
void add(){
    for(int i =1;i<=75;i++){
        r[i]  = getRand(0,100);
        s[i] = getRand(0,100-r[i]);
        res[i] = r[i] + s[i];
        printf("\t(%d)%d+%d = \t",i,r[i],s[i]);
        if(i%5==0)  printf("\n");
        if(i%75 == 0){
            cout<<"\t"<<endl;
        }
    }
}
//减法 
void subtract(){
    for(int i = 76;i<=150;i++){
        r[i]  = getRand(0,100);
        s[i] = getRand(0,r[i]);
        res[i] = r[i] - s[i];
        printf("\t(%d)%d-%d = \t",i,r[i],s[i]);
        if(i%5==0)  printf("\n");        
        if(i%75 == 0){
            cout<<"\t"<<endl;
        }
    }
}
//乘法 
void multiply(){
        for(int i = 151;i<=225;i++){
        r[i]  = getRand(1,100);
        s[i] = getRand(0,100/r[i]);
        res[i] = r[i] * s[i];
        printf("\t(%d)%d*%d = \t",i,r[i],s[i]);
        if(i%5==0)  printf("\n");        
        if(i%75 == 0){
            cout<<"\t"<<endl;
        }
    }
}
//除法 
void divide(){
    for(int i = 226;i<=300;i++){
        r[i]  = getRand(0,100);
        res[i] = r[i] / s[i];
        printf("\t(%d)%d/%d = \t",i,r[i],s[i]);
        if(i%5==0)  printf("\n");    
        if(i%75 == 0){
            cout<<"\t"<<endl;
        }
    }
}

  运行及测试结果:  

  4.我搭档的审核建议及收获

  (以下是从我搭档的视角陈述)

  建议:

  首先是流程上,尽管这是一个比较简单的程序,但是他在看了我编程一遍后还耗费了比较久的时间,除了他的习惯语言是java以外,最主要的原因是他的编码习惯相对来说不是很好。他在看了一遍题目以后就开始编程,一边编一边回过头来看题目,然后补充代码再继续,一遍遍的审题就很浪费时间,而且其中对于细节上把控的不到位,也导致经常出错,编译不通过。但是总体上从结果来说还是很好的,完成了题目要求,呈现的也很清晰明朗,代码中也加了注释,使得阅读代码更加方便。没什么需要改进的。

  收获:

  在审核完他的代码之后,我的收获也很多。首先是学习到了他的一种编码习惯,功能都用函数实现,再将功能函数进行封装,在主函数中只需要调用封装函数就行了,使得主函数简洁明了,这主要体现出了他的java编码习惯,良好的封装保护数据,这也是我之前未深入了解的,通过学习这个也能使得我加深对java的理解。其次是他的另一个编码习惯,在编码时加注释,无论是对于他人的阅读还是日后自己的阅读,加注释都是一种非常好的办法。

  

 

三、实验体会及总结

  本次结对编程实验对于我们两个人来说都是收获满满。

  所谓三人行必有我师焉,在之前的学习过程中,我们学习编程的途径主要是通过上课、自己上网这两种途径,所以我们在这上面的思维是相对狭窄的,仅仅局限于自己的所学。而个体是多样的,不同个体之间的碰撞,不同个体之间的交流能够为对方打开自己未曾涉猎而对方又了解的方面领域。比如在这次实验中,我通过审核我搭档的编码,明白了工欲善其事必先利其器,在编码前做好充分的规划,可以使得后续的编码有条不紊的进行;我搭档通过我的编码习惯,更理解了java的封装思想以及注释的好处。同时这也是一次团队合作,除了编码和审核,我们还有对这个题目的讨论,提出自己的理解和思路,一起探讨如何更好的实现某个功能,使用什么算法时间空间上更好。

  总之,这次实验不仅仅是课程的一次作业实验,更是让我们理解到结对编程的目的和好处的一次有意义的实验。在以后的编程生涯中,我们会经历很多团队形式的结对,我们要择其善者而从之,其不善者而改之,这样自己的编程能力和水平才会不断提升。

标签:编码,结对,编程,题目,int,四则运算,实验,&&
From: https://www.cnblogs.com/llllkan/p/17300617.html

相关文章

  • * 编程:当前项目的根目录 c.txt 文件中的内容为”abddbskshlsjdhhhiw”;编写程序读取文
    1packageio.homework;23importjava.io.FileReader;4importjava.io.FileWriter;5importjava.io.Reader;6importjava.io.Writer;78publicclassq18{9publicstaticvoidmain(String[]args){10try(Readerfr=newFileReader......
  • 编程:利用 FileInputStream 和 FileOutputStream,完成下面的要
    (1)用FileOutputStream往当前目录下“test.txt”文件中写入“HelloWorld”;(2)利用FileInputStream读入test.txt文件,并在控制台上打印出test.txt中的内容。(3)要求用try-catch-finally处理异常,并且关闭流应放在finally块中。代码实现:importjava.io.FileInput......
  • 编程:利用 IO 流,完成以下程序:
    (1)将26个大写字母(A~Z)写入到当前项目a.txt文件中;(2)读取文件中的内容,将读取的内容连接为一个字符串,并将所有的大写字母转变为小写字母打印输出转换的结果1packageio.homework;23importjava.io.FileReader;4importjava.io.Reader;56publicclass......
  • java面向对象编程-三大特性
    面向对象三大特性封装该露的露,该藏的藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过数据接口来访问,这称为信......
  • 结对编程
    本次结对编程作业由我和2152701一起完成1.源代码#include<cstdio>#include<cstdlib>#include<time.h>usingnamespacestd;charoperation(intoperation);floatcreateEquation();floatcalculate(intnumber1,intnumber2,intoperation);constintplus=1......
  • 结对编程——四则运算题目生成程序
    在本次结对编程中,我和2152618徐成阳一起完成了四则运算题目生成程序的编写,在这次结对编程中收获良多。在一起完成一个项目时,首先应该进行明确的分工,根据自己的特长进行分工可以大大提高效率,结对编程可以培养我们团队合作的意识,让我们更好地完成工作。以下是程序的源代码:#include......
  • Rust编程语言入门之函数式语言特性:-迭代器和闭包
    函数式语言特性:-迭代器和闭包本章内容闭包(closures)迭代器(iterators)优化改善12章的实例项目讨论闭包和迭代器的运行时性能一、闭包(1)-使用闭包创建抽象行为什么是闭包(closure)闭包:可以捕获其所在环境的匿名函数。闭包:是匿名函数保存为变量、作为参数可在一个地方......
  • 在结队编程过程中,我收获了这些 【Tutorials】
    在结队编程过程中,我收获了这些受到了编程开发领域文档设计的启发’Whatnobodytellsyouaboutdocumentation’,本文结构为四种基本博客文档结构中的Tutorials类型,旨在记录与总结,并以清晰的行文展示出来。......
  • 第七周实验——结对编程
    结对编程-四则运算练习题一、结对成员2152102&2152108 二、实验目的通过两位同学组队用结对编码(一位同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验。本次实验需要设计一个四则运算练习题的随机出题程序,可以通过C/C++/Java/Python等语言进行实现,四......
  • 结对编程--随机四则运算生产
    在本次作业中,与我一同搭档完成结对编程的同学学号为2152434。在讨论后,我们决定基于c++进行本次程序开发。在该系统中,如何产生随机数及使用随机数产生随机符号为开发关键点。以下为程序部分代码展示:    而输出结果如下:  实验体会:结对编程中最重要的是调......