首页 > 编程语言 >结对编程心得

结对编程心得

时间:2024-04-22 17:56:40浏览次数:28  
标签:case 结对 运算 num2 编程 break printf 心得 num1

结对编程心得

要求如下所示:
小学老师要每周给同学出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;  
}

标签:case,结对,运算,num2,编程,break,printf,心得,num1
From: https://www.cnblogs.com/hxr2252337/p/18151118

相关文章

  • “AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?
    通义灵码入职阿里云云原生团队后,已经展示过Ta 生成单元测试和自动生成代码的强大实力。今天,阿里云后端工程师云徊将从项目开发的实际需求出发,演示通义灵码在开发工作中可提供的帮助。通义灵码在Git开发项目中起到了哪些作用?云徊所在的团队日常会参与Git的开发工作,Git本身......
  • “AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?
    通义灵码入职阿里云云原生团队后,已经展示过Ta 生成单元测试和自动生成代码的强大实力。今天,阿里云后端工程师云徊将从项目开发的实际需求出发,演示通义灵码在开发工作中可提供的帮助。通义灵码在Git开发项目中起到了哪些作用?云徊所在的团队日常会参与Git的开发工作,Git本身......
  • day19-并发编程(上)
    1.进程和线程先来了解下进程和线程。类比:一个工厂,至少有一个车间,一个车间中至少有一个工人,最终是工人在工作。一个程序,至少有一个进程,一个进程中至少有一个线程,最终是线程在工作。上述串行的代码示例就是一个程序,在使用pythonxx.py运行时,内部就创建一个进程(主进程),在进......
  • 20-Linux编程
    20.1编辑器的选择20.1.1Vim编辑器编辑和保存文件搜索字符串替换字符串:[range]s/pattern/string/[c,e,g,i]替换范围选项标志含义c每次替换前询问e不显示错误信息g替换一行中的所有匹配项(这个选项通常需要使用)i不区分大小写针对程序员的......
  • day18-网络编程(下)
    1.OSI7层模型OSI的7层模型对于大家来说可能不太好理解,所以我们通过一个案例来讲解:假设,你在浏览器上输入了一些关键字,内部通过DNS找到对应的IP后,再发送数据时内部会做如下的事:应用层:规定数据的格式。"GET/s?wd=你好HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n"表示层......
  • C#的基于.net framework的Dll模块编程(一) - 编程手把手系列文章
    从此博文开始分几篇介绍C#的开发。这次讲讲C#的.netframework的Dll文件类库模块的编程方法。对于Windows来说,要运行应用程序要基于Dll类库和Exe执行文件。对于笔者来说,模块化的编程方式,就是将一些函数等封装到Dll类库文件中,将这些类库集中和分模块进行编写和管理。就是......
  • OOP面向对象编程三次题目总结
    一.前言:在这三次题目集中,最后一小题为判题程序,其余题为基础的知识点题,输入一段题目内容,试卷内容,答卷内容,评判对错情况和计算最终总分,在这三次作业的迭代下,我一次比一次做的不好,第一次是满分,第二次95,第三次只有79,即使效果不好,我还是把我的做题思路写下来供大家参考。二.三次作业......
  • linux shell 编程学习总结
    1文件和数组1.1读文件并将文件内容保存到数组,遍历数组src.f文件内容./src/xxx_1.md./src/xxx_2.md./src/xxx_3.md./src/xxx_4.md./src/xxx_5.mdrun.sh#!/bin/bash###readflisttoarraysrc_array=()whilereadline;dosrc_array+=("$line")done<$1##......
  • 结对编码-四则运算 2252118 2252121
    22521182252121程序具有以下特点和功能:随机生成题目:程序会随机生成包含两个运算符(加、减、乘、除)的四则运算题目。整数结果:所有运算的结果都是整数,避免了小数的出现。运算符优先级:程序正确处理了运算符的优先级,确保乘法和除法在加法和减法之前执行。整除调整:在涉及除法的题......
  • 结对编程 四则运算
    题目:小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0——1000之间我们采用的是c++来实......