结对编程心得
要求如下所示:
小学老师要每周给同学出300道四则运算练习题。
这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
两个运算符,100 以内的数字,不需要写答案。
需要检查答案是否正确,并且保证答案在 0..100 之间
尽可能地多设置一些条件
一、心得体会
(2252317):我们设计了一个简单的数学练习程序,允许用户选择不同的数学运算类型进行练习,并记录用户的答题情况。在这个过程中,我们遇到了许多挑战和学习机会,下面我将分享我们的心路历程和小结。
首先,我负责从头开始设计程序的整体架构。在我们的商讨后决定使用C语言来实现这个数学练习程序,因为C语言是一种功能强大且高效的编程语言,非常适合这种小型项目。我们定义了几个常量来设置题目总数、每轮题目数量以及最大得分,这有助于程序的灵活性和可维护性。
接着,我设计了一个枚举类型来表示不同的数学运算类型,包括加法、减法、乘法、除法以及混合运算。这样的设计使得程序能够根据用户的选择来生成不同类型的数学题目,增加了趣味性和挑战性。
在编写主函数时,我的队友使用了随机数生成器来生成题目中的数字,确保每道题目的数据都是随机的。他使用了一个循环,让用户可以不断选择不同的数学运算类型进行练习,直到完成所有题目或者选择查看统计信息为止。
在处理用户输入和答题情况时,我使用了switch语句和条件判断来判断用户选择的数学运算类型以及判断用户的答题是否正确。每回答一道题目,程序会给出相应的反馈,告诉用户答题结果,并根据用户的选择决定是否继续答题。
最后,在程序的结尾处,我们输出了用户的总体答题情况,包括总共答题数、正确题数和错误题数,让用户可以清晰地了解自己的表现。
通过这次结对编程的实践,我不仅加深了对C语言的理解和应用,还学习到了如何设计一个简单而有趣的数学练习程序。我体会到了团队合作的重要性,通过相互交流和合作,我们解决了许多问题,并共同完成了这个项目。最重要的是,我通过这个过程提升了编程能力,锻炼了逻辑思维和问题解决能力。
总的来说,这次结对编程的经历让我收获良多,不仅提升了技术水平,还增强了团队合作意识。我希望能够继续探索更多有趣的项目,不断挑战自我,不断进步。结对编程不仅是一次技术上的合作,更是一次心灵上的交流和成长,让我更加坚信团队合作的力量,共同创造更多美好的代码成果。
(2252337)::我们设计了一个简单的数学练习程序,允许用户选择不同的数学运算类型进行练习,并记录用户的答题情况。在这个过程中,我们遇到了许多挑战和学习机会,下面我将分享我们的心路历程和小结。我负责的是使用随机数生成器来生成题目的数字,确保数据随机,同时使用了一个循环,可以让用户一直使用,这是一个既有挑战性又有趣味性的工作,因为我需要确保生成的数字是随机的,同时又能够满足四则运算的需求。我开始的第一步是仔细阅读用户需求和程序框架,确保我理解了自己的任务是什么。用户希望有一个能够生成随机数的程序,而我需要确保这些随机数符合四则运算的要求。在理解了任务之后,我思考了如何设计算法来生成随机数。我需要确保生成的数字在合适的范围内,并且能够满足不同运算的要求,比如加法、减法、乘法和除法。在设计好算法之后,我开始编写代码来实现我的想法。我使用了 C 语言中的随机数生成函数,结合了四则运算的特点,确保生成的数字能够满足程序的需求。完成编码之后,我进行了测试,并且修复了一些潜在的问题和错误。我确保生成的随机数能够正常地被其他部分的代码使用,并且没有出现不符合预期的情况。然后我们发现了,加减乘除的四则运算每十道题刷新出来的结果和我们设想的没有出入,十分完美,在混合运算中一直却还是出现了加法,十道题都是加法,这种情况。我们想到第一是理解问题,因为这本身是两个数的运算,只存在一个运算符号,所以加减乘除不会出现在同一题中,第二,在我们5-6次的实验发现,每次点击混合运算后出现的十道题可能全是加法,也可能全是减法,从某种意义上来讲,运气好的话,确实可以做到点进混合运算每十道题出现不同算法,但这是个bug,还在攻克中。。。
通过这个项目,我学到了许多关于随机数生成和算法设计的知识。以下是我在这个过程中得到的一些小结:了解需求的重要性:在开始工作之前,确保我理解了任务的要求和程序的框架是非常重要的,这有助于我更好地规划我的工作。设计一个能够生成随机数并且满足四则运算要求的算法是有挑战性的,需要综合考虑多个因素。充分的测试是确保我的代码质量的关键,我需要确保生成的随机数能够被其他部分的代码正确地使用。我不仅提高了自己的编程技能,还学到了很多关于算法设计和测试的经验,这将对我的未来工作有很大的帮助。
二、运行截图
1.界面
2.加法运算
3.减法运算
4.乘法运算
5.除法运算
6.统计正确错误题数
三、完整代码
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TOTAL_QUESTIONS 300
#define QUESTIONS_PER_ROUND 20
#define MAX_RESULT 1000
typedef enum {
ADDITION,
SUBTRACTION,
MULTIPLICATION,
DIVISION,
MIXED
} OperationType;
int main() {
srand(time(NULL));
int correctCount = 0, wrongCount = 0;
OperationType currentOp = MIXED;
while (correctCount + wrongCount < TOTAL_QUESTIONS) {
printf("\n=== 数学练习菜单 ===\n");
printf("1. 加法练习\n");
printf("2. 减法练习\n");
printf("3. 乘法练习\n");
printf("4. 除法练习\n");
printf("5. 混合运算\n");
printf("6. 查看统计\n");
printf("请选择(1-6): ");
int choice;
scanf("%d", &choice);
getchar();
switch (choice) {
case 1:
currentOp = ADDITION;
break;
case 2:
currentOp = SUBTRACTION;
break;
case 3:
currentOp = MULTIPLICATION;
break;
case 4:
currentOp = DIVISION;
break;
case 5:
currentOp = MIXED;
break;
case 6:
printf("正确: %d, 错误: %d\n", correctCount, wrongCount);
continue;
default:
printf("无效选择,请重新选择。\n");
continue;
}
for (int i = 0; i < QUESTIONS_PER_ROUND && (correctCount + wrongCount) < TOTAL_QUESTIONS; ++i) {
int num1 = rand() % 101;
int num2 = rand() % 101;
int correctAnswer = 0;
char operation = '?';
switch (currentOp) {
case ADDITION:
correctAnswer = num1 + num2;
operation = '+';
break;
case SUBTRACTION:
if (num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
correctAnswer = num1 - num2;
operation = '-';
break;
case MULTIPLICATION:
correctAnswer = num1 * num2;
operation = '*';
break;
case DIVISION:
do {
num2 = rand() % 50 + 1;
correctAnswer = (rand() % 100) + 1;
num1 = num2 * correctAnswer;
} while (num1 > 100);
operation = '/';
break;
case MIXED:
currentOp = (OperationType)(rand() % 4);
i--;
continue;
}
if (currentOp == MIXED) continue;
printf("题目 #%d: %d %c %d = ?\n", i + 1, num1, operation, num2);
int userAnswer;
scanf("%d", &userAnswer);
getchar();
if (userAnswer == correctAnswer) {
printf("回答正确!\n");
correctCount++;
} else {
printf("回答错误!正确答案是: %d\n", correctAnswer);
wrongCount++;
}
if ((correctCount + wrongCount) % 10 == 0) {
char continueChoice;
printf("您已完成10道题,是否继续?(y/n): ");
scanf(" %c", &continueChoice);
if (continueChoice != 'y' && continueChoice != 'Y') {
break;
}
}
}
}
printf("\n=== 练习结束 ===\n");
printf("总共答题数: %d\n", correctCount + wrongCount);
printf("正确题数: %d\n", correctCount);
printf("错误题数: %d\n", wrongCount);
return 0;
}