前言
按照结对编程的原则,我和小组另一个成员进行了结对编程。我们开发的结对项目是小学的四则运算生成器。具体来说,我们开发了一个程序,用于随机生成四则运算题目,供学生答题,并返回答案的正误。在讨论后,我们决定使用 C++ 来开发这个控制台程序,因为 C++ 具有优秀的计算功能,并且能够在时间限制下高效完成任务。
功能要求
小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案(实现)
–需要检查答案是否正确,并且保证答案在 0..100 之间(实现)
–尽可能地多设置一些条件
添加的条件:
给出的题目的结果为0--100之间的整数
在算式中出现除法运算时,除法运算能够整除
编程阶段
当我负责编程时,我的队友在一旁观看。我们首先讨论了整体的框架,确定了要实现的功能以及实现方法。然后,我们开始编程阶段。在这个阶段,我的队友与我断断续续地交流沟通。他们在我遇到问题或思路陷入僵局时提出了一些新的想法。最终,我们成功实现了四则运算题目生成器。整个过程充满了合作与沟通,使得我们能够充分利用彼此的想法和技能来完成任务。
点击查看代码
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 生成随机数
int generateRandomNumber() {
return rand() % 101; // 生成 0 到 100 之间的随机数
}
// 生成随机运算符
char generateRandomOperator() {
char operators[] = { '+', '-', '*', '/' };
int index = rand() % 4; // 生成 0 到 3 之间的随机数
return operators[index];
}
// 输出题目
void printQuestion(int num1, char op1, int num2, char op2, int num3, int index) {
cout << index << ". " << num1 << " " << op1 << " " << num2 << " " << op2 << " " << num3 << " = ?" << endl;
}
// 计算表达式结果
int calculate(int num1, char op1, int num2, char op2, int num3) {
int result1, result2;
switch (op1) {
case '+':
result1 = num1 + num2;
break;
case '-':
result1 = num1 - num2;
break;
case '*':
result1 = num1 * num2;
break;
case '/':
if (num2 != 0)
result1 = num1 / num2;
else
return -1; // 除数为0,返回无效结果
break;
default:
return -1; // 非法运算符,返回无效结果
}
switch (op2) {
case '+':
result2 = result1 + num3;
break;
case '-':
result2 = result1 - num3;
break;
case '*':
result2 = result1 * num3;
break;
case '/':
if (num3 != 0 && result1 % num3 == 0) // 保证结果在0-100之间且除法能整除
result2 = result1 / num3;
else
return -1; // 除数为0或结果不在0-100之间,返回无效结果
break;
default:
return -1; // 非法运算符,返回无效结果
}
// 确保结果在 0 到 100 之间
if (result2 < 0)
return 0;
else if (result2 > 100)
return 100;
else
return result2;
}
// 判断答案是否正确
bool isAnswerCorrect(int num1, char op1, int num2, char op2, int num3, int answer) {
int result = calculate(num1, op1, num2, op2, num3);
if (result != -1 && result == answer) {
return true;
}
else {
return false;
}
}
int main() {
srand(time(0)); // 初始化随机数种子
int index = 1;
while (true) {
int num1 = generateRandomNumber();
int num2 = generateRandomNumber();
int num3 = generateRandomNumber();
char op1 = generateRandomOperator();
char op2 = generateRandomOperator();
// 输出题目
printQuestion(num1, op1, num2, op2, num3, index);
// 计算正确答案
int correctAnswer = calculate(num1, op1, num2, op2, num3);
// 接收答案
int answer;
cout << "请输入答案:";
cin >> answer;
// 判断答案是否正确
if (answer == correctAnswer) {
cout << "回答正确!" << endl;
}
else {
cout << "回答错误!" << endl;
}
// 继续下一题
index++;
}
return 0;
}
运行展示
总结
这次与同伴一起进行结对编程,我发现了自己在某些方面的不足,以及在一些情况下考虑不够全面。结对编程的过程中,我体会到了与同伴合作的高效性,因为他们能够及时发现问题并提出建议。同时,结对编程还让我有机会与同伴分享彼此的技术知识和经验,这种交流促进了我个人技术的成长,让我学到了许多新的编程技巧和方法。总的来说,结对编程对我个人和团队的发展都是非常有益的。
合作对象
2252631 2252620