2152201 2157132
·关于结对编程
结对编程(Pair programming)来自于极端编程XP(eXtreme Programming),是它的十二个最佳实践之一。顾名思义,结对编程就是两个程序员坐在一起,结对进行代码开发。在极限编程中,所有的软件产品都是由两个程序员并排坐在一起,在同一台机器上共同完成的。
关于结对编程在网上有很多声音,相对比其他的敏捷实践,它的争议几乎是最大的。根据VersionOne的14届年度敏捷状态报告,在组织采用的敏捷工程实践中,结对编程占受访企业的31%,排第八位,仅次于持续部署,高于TDD,由此可见,结对编程还是有一席之地、可取之处的。
·编程需求主体:
1.小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:
- C/C++
- C#/VB.net/Java
- Excel
- Unix Shell
- Emacs/Powershell/Vbscript
- Perl
- Python
2. 一或两个运算符(a+b或a+b+c),100以内的数字,不需要写答案
3. 需要检查答案是否正确,并且保证答案在0..100之间
4. 尽可能地多设置一些条件
·设计内容:
1. 随机生成100以内的四则运算题目
2. 支持多运算符
3. 提交后判断对错并显示正确结果
·设计思路
采用C++语言,设计了五个函数,分别为打印菜单以及加减乘除的函数,为了保证结果以及题目均为100以内且随机,我们采用rand()%100来生成题目。同时加法和乘法生成后再通过结果是否超过100来改变flag的值从而决定是否更换题目。在除法函数中,还增加了是否出整除题目的选项,供做题人自主选择。同时还可以选择每类运算随机出题的数量,做一道批改一道,方便及时订正。
·编程现场
·代码
#include <iostream> #include <ctime> #include <cstdlib> #include <conio.h> #include<cmath> #include <iomanip> using namespace std; void menu(); int main() { system("cls"); menu(); return 0; } void addtion() { int a,b,i,d,number; srand ( (unsigned) time (NULL) ); system("cls"); cout<<"\t请输入题目数!\n\t\t"; cin>>number; getchar(); cout<<"\t程序将会随机出题,请输入正确答案!\n\t\t"; for(i=0;i<number;i++) { a=rand()%100; b=rand()%100; if(a+b>=100) { i--; continue; } cout<<"\n\t"<<a<<"+"<<b<<"="; cin>>d; if(d==a+b) { cout<<"\t恭喜答对了\n"; } else cout<<"\t很可惜,错了哦!答案是"<<a+b<<"\n"; } getchar(); cout<<"\t你已经做完测试,请按任意键返回菜单\n"; getchar(); } void subtraction() {int a,b,i,d,number; srand ( (unsigned) time (NULL) ); system("cls"); cout<<"\t请输入题目数!\n\t\t"; cin>>number; getchar(); cout<<"\t程序将会随机出题,请输入正确答案!\n\t\t"; for(i=0;i<number;i++) {a=rand()%100; b=rand()%100; if(a-b<=0) { i--; continue; } cout<<"\n\t"<<a<<" - "<<b<<"="; cin>>d; if(d==a-b) { cout<<"\t恭喜答对了\n"; } else cout<<"\t很可惜,错了哦!答案是"<<a-b<<"\n"; } getchar(); cout<<"\t你已经做完测试,请按任意键返回菜单\n"; getchar(); } void multiply(){ int a,b,i,d,number; srand ( (unsigned) time (NULL) ); system("cls"); cout<<"\t请输入题目数!\n\t\t"; cin>>number; getchar(); cout<<"\t程序将会随机出题,请输入正确答案!\n\t\t"; for(i=0;i<number;i++) { a=rand()%100; b=rand()%100; if(a*b>=100) { i--; continue; } cout<<"\n\t"<<a<<" * "<<b<<"="; cin>>d; if(d==a*b) { cout<<"\t恭喜答对了\n"; } else cout<<"\t很可惜,错了哦!答案是"<<a*b<<"\n"; } getchar(); cout<<"\t你已经做完测试,请按任意键返回菜单\n"; getchar(); } void division() { int i,a,b,number,c,f,g; double d,e; srand ( (unsigned) time (NULL) ); system("cls"); cout<<"\t请输入题目数!\n\t\t"; cin>>number; getchar(); cout<<"\t是否整除?(是1/否0)\n\t\t"; cin>>c; getchar(); cout<<"\t程序将会随机出题,请输入正确答案!\n\t\t"; if(c==0) { for(i=0;i<number;i++) { a=rand()%100; b=rand()%100; if((a<b)||b==0||a%b==0) { i--; continue; } cout<<"\n\t"<<a<<" / "<<b<<"="; e=(a*1.0)/b; cin>>d; if(fabs(e-d)<0.001) { cout<<"\t恭喜答对了\n"; } else cout<<setprecision(2)<<"\t很可惜,错了哦!答案是"<<e<<"\n"; } getchar(); cout<<"\t你已经做完测试,请按任意键返回菜单\n"; getch(); } else { for(i=0;i<number;i++) { a=rand()%100; b=rand()%100; if(a<b||b==0||a%b!=0) { i--; continue; } cout<<"\n\t"<<a<<" / "<<b<<"="; g=a/b; cin>>f; if(g==f) { cout<<"\t恭喜答对了\n"; } else cout<<"\t很可惜,错了哦!答案是"<<a/b<<"\n"; } getchar(); cout<<"\t你已经做完测试,请按任意键返回菜单\n"; getch(); } } void menu() { int i; cout<<"\n\n\t******************************\n"; cout<<"\t 欢迎使用四则运算练习软件 \n"; cout<<"\t 2152201 2157132结对编程 \n"; cout<<"\t 1- 加法 \n"; cout<<"\t 2- 减法 \n"; cout<<"\t 3- 乘法 \n"; cout<<"\t 4- 除法 \n"; cout<<"\t 0- 退出 \n"; cout<<"\t******************************"; i=getch(); switch(i) { case '1':addtion();break; case '2':subtraction();break; case '3':multiply();break; case '4':division();break; case '0':exit(0);break; default:system("cls"); cout<<"\n\t\t请输入1~4!\n\n\n"; getch(); break; } main(); }
·演示结果
1.主菜单界面
2.加法界面
3.减法界面
4.乘法界面
5.除法界面(整除)
6.除法界面(非整除)
·心得体会
合作配合:在结对编程中,合作配合是非常重要的。我们需要相互协调,互相支持,尊重对方的想法,并共同解决问题。
分工合作:在编程任务中,我们可以根据个人的专长和技能来分配不同的任务,充分发挥每个人的优势,从而提高整个团队的效率和质量。
代码注释和文档:在编写代码过程中,我们需要及时添加注释和文档,以方便后续的维护和修改,同时也可以提高代码的可读性和可理解性。
测试和调试:在编写程序时,我们需要及时测试和调试程序,以确保程序的正确性和健壮性。我们可以使用单元测试、集成测试等方法来测试程序的各个部分,并尽可能覆盖各种输入和输出情况。
关于组织是否要采用结对编程这项实践,主要是它到底适不适合自己的项目。选择某一项实践的时候我们要形神兼具,如果仅仅是两个人用一台电脑,一个写,一个看,这只是形式上符合,而重点是要理解这项实践它背后的理念。在结对中通常要求两个人水平比较相近,这样可以形成互补,引起讨论。两个人的智慧大于一个人的智慧,这是结对编程的基本依据,这样就会提升质量,提升工作效率。
标签:结对,cout,编程,100,include,getchar From: https://www.cnblogs.com/smrzawyc/p/17309663.html