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

结对编程

时间:2024-04-25 09:02:25浏览次数:26  
标签:case 结对 num2 temp int 编程 break num1

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

标签:case,结对,num2,temp,int,编程,break,num1
From: https://www.cnblogs.com/cyl2004/p/18156677

相关文章

  • Windows编程系列:设备I/O
    Windows设备在Windows平台下,设备被定义为能够与之进行通信的任何东西。最常见的I/O设备包括:文件、文件流、目录、物理磁盘、卷、控制台缓冲区、磁带驱动器、通信资源、mailslot和管道等。平常我们使用的文件,目录都可以称之为设备。 本文是介绍设备的通用操作,以文件操作进......
  • 软件开发与创新第二次实验———结对编程:计算出题系统
    一.结对信息2252418盛宇伟2252436董朝二.题目要求小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并......
  • 结对编程
    点击查看代码#include<iostream>#include<stdio.h>#include<time.h>#include<stdlib.h>usingnamespacestd;intj=0;charyunsuanfu(){ chara[]={'+','-','*','/'}; intn=4; inti; i=rand()%n; r......
  • 结对编程
    #include<iostream>#include<cstdlib>#include<ctime>#include<fstream>#include<limits>//函数原型声明intgetRandomNumber(intmin,intmax);intmain(){intn;std::cout<<"请输入题目的数量:"<<st......
  • 自学编程两个月,现在我月入 4 万元
    这个外国小哥叫Nico,他一开始是个编程小白,后来把自己关在房间里花了两个月时间学会了编程,如今正在开发一款名为Talknotes的应用,可以将语音备忘录转化为结构化的内容,月收入5000美元。Nico从高中毕业就开始创业,大学只上了一个月就退学了,他尝试了很多方向,最终坚持做跨境电商和......
  • 第八周-结对编程
    作业题目程序源代码点击查看代码importrandomimporttimeimportosimportjsondefquestion():a=random.randint(0,100)b=random.choice(["+","-","*","/"])c=random.randint(0,100)d=random.choice(["......
  • 我为什么学习Rust编程?
    2024-04-24下午,今下午感受到如果要睡觉就应该让音响在自己耳边程序轰炸.翻看gitee,又再次看到这个loop示例,这几天忙于工作,除了偶尔刷下rust视频,rust的电子书,其他的都看得比较少,主要还是感觉工作疲倦之余已经没有精力来继续回顾和延伸.其实后来感觉不是的,就像那会儿接......
  • 并发编程(Semaphore)
    Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都将消耗一个许可,每次调用release()都将归还一个许可特性Semaphore通常用于限制同一时间对共享资源的访问次数上,也就是常说的限流。下面我们一起来学习Java中Semaphore是如何实现的。类结构Semaphore中包含了一......
  • 并发编程(CyclicBarrier)
    CyclicBarrier是一个同步器,允许一组线程相互之间等待,直到到达某个公共屏障点(commonbarrierpoint),再继续执行CyclicBarrier与CountDownLatch异同都可以阻塞一组线程等待被唤醒CyclicBarrier是最后一个线程到达后会自动唤醒,而CountDownLatch需要显式调用countDown方法Cyc......
  • C#的基于.net framework的Dll模块编程(二) - 编程手把手系列文章
          今天继续这个系列博文的编写。接上次的篇幅,这次介绍关于C#的Dll类库的创建的内容。因为是手把手系列,所以对于需要入门的朋友来说还是挺好的,下面开始咯: 一、新建Dll类库;这里直接创建例子的Dll类库项目,至于项目文件目录的存放布局后面的例子中会介绍。......