2252118 2252121
程序具有以下特点和功能:
随机生成题目:程序会随机生成包含两个运算符(加、减、乘、除)的四则运算题目。
整数结果:所有运算的结果都是整数,避免了小数的出现。
运算符优先级:程序正确处理了运算符的优先级,确保乘法和除法在加法和减法之前执行。
整除调整:在涉及除法的题目中,程序会调整数字以确保结果为整数。
用户交云:用户可以输入他们的答案,程序会检查答案是否正确,并提供反馈。
鼓励信息:根据用户完成的题目数量,程序会输出不同的鼓励信息。
错误反馈:当用户连续答错一定数量的题目时,程序会提供相应的反馈,鼓励用户更加认真。
退出机制:用户可以通过输入特定的命令(-1)来退出程序。
include
include
include
include
int calculate(int num1, int num2, char op);
bool isResultValid(int result);
void printEncouragement(int count);
void printErrorFeedback(int errorCount);
int main() {
srand(static_cast
int num1, num2, num3, result;
char op1, op2;
std::string input;
int count = 0;
int errorCount = 0;
while (true) {
do {
num1 = rand() % 100 + 1;
num2 = rand() % 100 + 1;
num3 = rand() % 100 + 1;
op1 = "+-*/"[rand() % 4];
op2 = "+-*/"[rand() % 4];
if (op1 == '/' && num1 % num2 != 0) {
num1 = num2 * (rand() % 10 + 1);
}
if (op2 == '/' && num2 % num3 != 0) {
num2 = num3 * (rand() % 10 + 1);
}
if (op1 == '+' || op1 == '-') {
if (op2 == '*' || op2 == '/') {
num2 = calculate(num2, num3, op2);
op2 = op1;
num3 = rand() % 100 + 1;
}
}
result = calculate(num1, num2, op1);
result = calculate(result, num3, op2);
} while (!isResultValid(result));
std::cout << num1 << ' ' << op1 << ' ' << num2 << ' ' << op2 << ' ' << num3 << " = ?\n";
std::cin >> input;
if (input == "-1") {
break;
}
int userAnswer;
std::stringstream ss(input);
ss >> userAnswer;
if (userAnswer == result) {
std::cout << "正确\n";
errorCount = 0;
}
else {
errorCount++;
std::cout << "错误\n";
printErrorFeedback(errorCount);
}
count++;
printEncouragement(count);
}
return 0;
}
int calculate(int num1, int num2, char op) {
switch (op) {
case '+': return num1 + num2;
case '-': return num1 - num2;
case '*': return num1 * num2;
case '/': return num2 != 0 ? num1 / num2 : 1;
default: return 0;
}
}
bool isResultValid(int result) {
return result >= 0 && result <= 1000;
}
void printEncouragement(int count) {
switch (count) {
case 1:
std::cout << "还需努力\n";
break;
case 2:
std::cout << "再努力一把\n";
break;
case 3:
std::cout << "今天的量完成啦,请继续提高\n";
break;
case 4:
std::cout << "加油,还能努力一把\n";
break;
case 5:
std::cout << "今天的任务超额完成了,该休息了,明天继续\n";
break;
default:
// No encouragement for other counts
break;
}
}
// Print error feedback based on the error count
void printErrorFeedback(int errorCount) {
if (errorCount >= 5 && errorCount < 10) {
std::cout << "你错的有点多了哦\n";
}
else if (errorCount >= 10) {
std::cout << "做题要认真哦\n";
}
}
这里便于展示,达到提示的次数调整为1-5次与错误5次以上和10次以上
实验总结:
结对编程优点:
沟通与协作:结对编程强调了沟通的重要性。通过密切合作,我们能够更好地理解问题,找到更有效的解决方案,并且在编码过程中即时解决疑问。
知识共享:这次实验是一个学习和教学的过程。双方可以互相学习对方的编程技巧和解决问题的方法,从而提高个人技能。
代码质量:有两套眼睛检查代码意味着错误更容易被发现和修正。这通常会导致更高质量、更可维护的代码。
互相学习:每个人都有自己的强项和弱点。结对编程使得团队成员能够互补技能,共同成长。
动态交互:与传统的编程相比,结对编程更加动态和互动。它鼓励实时反馈和讨论,这有助于快速学习和适应。
问题解决:在遇到难题时,两个头脑比一个头脑好用。结对编程提供了即时的支持和创意,有助于找到解决问题的新方法。
效率:虽然结对编程可能看起来效率较低,但它实际上可以通过减少错误和提高代码质量来节省时间。
这次结对编程的实验是一个宝贵的学习经历,它不仅提高了编程技能,还加深了对团队合作和沟通重要性的理解。