结对编程

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的博客体会截屏

posted @ 2024-04-25 08:32  乐0304  阅读(11)  评论(0编辑  收藏  举报