结对编程
1.主要内容
在本节实验课上,两名同学组队,一个同学编码,另一名同学在旁边审核代码,检查错误,之后再交换角色。
这节课上,开发一个小程序,能够进行四则运算,其中包括两个运算符,100以内的数字,然后输入答案,判断答案是否正确。
2.代码
点击查看代码
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>
using namespace std;
// 生成随机整数
int randomInt(int min, int max) {
return min + rand() % (max - min + 1);
}
// 生成随机运算符
char randomOperator() {
char operators[] = { '+', '-', '*', '/' };
return operators[rand() % 4];
}
// 计算表达式的结果
int calculate(int num1, char op1, int num2,char op2,int num3) {
int weight1 = 0;
int weight2 = 0;
switch (op1) {
case '+':
case '-':
weight1 = 1;
break;
case '*':
case '/':
weight1 = 2;
break;
default:
break;
}
switch (op2) {
case '+':
case '-':
weight2 = 1;
break;
case '*':
case '/':
weight2 = 2;
break;
default:
break;
}
int temp = 0;
if (weight1 >= weight2)
{
switch (op1) {
case '+':
temp = num1 + num2;
break;
case '-':
temp = num1 - num2;
break;
case '*':
temp = num1 * num2;
break;
case '/':
if (num2 != 0) {
if (num1 % num2 == 0)
temp = num1 / num2;
else return -1;
}
else {
return -1; // 表示除数为 0
}
break;
}
num1 = temp;
num2 = num3;
switch (op2) {
case '+':
temp = num1 + num2;
break;
case '-':
temp = num1 - num2;
break;
case '*':
temp = num1 * num2;
break;
case '/':
if (num2 != 0) {
if (num1 % num2 == 0)
temp = num1 / num2;
else return -1;
}
else {
return -1; // 表示除数为 0
}
break;
}
}
else{
switch (op2) {
case '+':
temp = num2 + num3;
break;
case '-':
temp = num2 - num3;
break;
case '*':
temp = num2 * num3;
break;
case '/':
if (num3 != 0) {
if (num2 % num3 == 0)
temp = num2 / num3;
else return -1;
}
else {
return -1; // 表示除数为 0
}
break;
}
num2 = temp;
switch (op1) {
case '+':
temp = num1 + num2;
case '-':
temp = num1 - num2;
case '*':
temp = num1 * num2;
case '/':
if (num2 != 0) {
if (num1 % num2 == 0)
temp = num1 / num2;
else return -1;
}
else {
return -1; // 表示除数为 0
}
}
}
return temp;
}
int count1 = 1;
void test1()
{
srand(time(0)); // 用当前时间设置随机数种子
const int num_problems = 50;
int count = 0;
for (int i = 0; count < num_problems; ++i) {
int num1 = randomInt(1, 100);
int num2 = randomInt(1, 100);
int num3 = randomInt(1, 100);
char op1 = randomOperator();
char op2 = randomOperator();
// 计算正确答案
int correctAnswer = calculate(num1, op1, num2, op2, num3);
if (correctAnswer <= 1000 && correctAnswer > 0) {
// 输出题目
cout << "问题 " << count++ + 1 << ": " << num1 << " " << op1 << " " << num2 << " " << op2 << " " << num3 << " = ?" << endl;
// 输入学生答案
int studentAnswer;
cout << "请输入答案: ";
cin >> studentAnswer;
// 检查答案是否正确
if (studentAnswer == correctAnswer) {
cout << "回答正确!" << endl;
}
else {
cout << "正确答案是 " << correctAnswer << endl;
}
}
}
cout << " " << endl;
cout << "今日作业已完成" << endl;
system("cls")
;
}
int main() {
cout << "------------开始作答(按1)-----------" << endl;
cout << "--------------退出(按0)-------------" << endl;
int a;
cin >> a;
switch (a)
{
case 1:system("cls"); test1();
case 0:exit(0);
default:
break;
}
return 0;
}
3.运算结果截图:
(1).开始界面
开始界面只是设计的一个很简单的界面,通过开始界面,按1开始进行作答,按0退出程序。
(2).运算界面
用户进行作答,若回答正确,则进入到下一题,若回答错误,则提示错误,并给出正确答案,后进入下一题。
(3).完成界面
当完成每日的50道题目后,显示今日任务已完成。
4.博客体会
我觉得结对编程有很多优点,首先可以减少很多错误,在编程中,两个人一个人编码,另一个人审查,很容易发现并纠正潜在的问题。然后,两个人可以分享自己的知识和技能,一人可能有不同的经验,有助于丰富代码质量。由于及时审查和讨论,代码的质量会比单独编码时要高,在调试时,也会缩短调试时长,加快完成进度。结对编程是一种很好的学习方式,可以从合作伙伴那里学到新知识,而且在遇到困难时,两个头脑比一个头脑更容易解决问题。另外,合作伙伴在旁边看着,可以提高自己的专注力和效率。总之,对于我来说,结对编程是一种很有帮助的方式。
2252228的博客体会截屏