首页 > 编程语言 >软件开发与创新——结对编程

软件开发与创新——结对编程

时间:2024-04-23 16:22:23浏览次数:20  
标签:结对 include return num1 软件开发 int 编程 num2 op

本次结对编程作业由我和学号2252406的同学一起编写

一、题目:小学老师要求出300道四则运算练习题
要求:两个运算符,都是100以内的数字,答案在0-1000之间。
拓展功能:有除法时计算的结果保留两位小数,避免除0错误,回答错误的题目存到“错题本.txt”文件中,方便后续查看及改正。300道题全部答完之后会出现正确题目占比(为了能够及时的看出结果这里以3道题为例)
二、代码及截图

点击查看代码
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cmath>
#include<fstream>

using namespace std;

// 生成随机整数
int RandomNumber(int min, int max) {
    return rand() % (max - min + 1) + min;
}

// 生成随机运算符
char RandomOperator() {
    char operators[] = { '+', '-', '*', '/' };
    return operators[rand() % 4];
}

//定义运算符优先级
int precedence(char op) {
    if (op == '+' || op == '-')
        return 1;
    if (op == '*' || op == '/')
        return 2;
    return 0;
}

// 执行四则运算
double performOperation(double num1, char op, double num2) {
    switch (op) {
    case '+':
        return num1 + num2;
    case '-':
        return num1 - num2;
    case '*':
        return num1 * num2;
    case '/':
        return num1 / num2;
    default:
        return 0.0;
    }
}


int main() {
    srand(time(0)); // 设置随机种子
    ofstream outfile("错题本.txt");
    const int numQuestions = 3; // 生成题目数量
    int correctCount = 0; // 记录答对数量
    cout << "加减乘除的四则运算";
    cout << "(所有结果均保留两位小数!)" << endl;
    // 生成并输出题目
    for (int i = 0; i < numQuestions; ++i) {
        int num1 = RandomNumber(1, 100);
        int num2 = RandomNumber(1, 100);
        int num3 = RandomNumber(1, 100);
        char op1 = RandomOperator();
        char op2 = RandomOperator();

        // 将运算符和数字转换为字符串
        string question = to_string(num1) + " " + op1 + " " + to_string(num2) + " " + op2 + " " + to_string(num3);

        // 计算答案
        double intermediateResult;
        double answer;
        if ((op1 == '/' && num2 == 0) || (op2 == '/' && num3 == 0)) {
            i--;
            continue; // 避免除零错误
        }
        else {
            if (precedence(op2) > precedence(op1)) {
                intermediateResult = performOperation(num2, op2, num3);
                answer = performOperation(num1, op1, intermediateResult);
            }
            else {
                intermediateResult = performOperation(num1, op1, num2);
                answer = performOperation(intermediateResult, op2, num3);
            }
        }
        if (answer < 0 || answer>1000)
        {
            i--;
            continue;
        }
        double reanswer = round(answer * 100) / 100;
        // 输出题目并要求用户输入答案
        cout << "--------------------------------------" << endl;
        cout << "第" << (i + 1) << "题" << ": " << question << " =  ";
        double userAnswer;
        cin >> userAnswer;

        // 判断答案是否正确
        if (userAnswer == reanswer) {
            cout << "回答正确!" << endl;
            correctCount++;
        }
        else {
            cout << "回答错误!" << endl;
            cout<<"正确答案为: " << reanswer << endl;
            outfile << "第" << (i + 1) << "题" << ": " << question << " =  " << endl << "错误答案:" << userAnswer << "   " << "正确答案:" << reanswer << endl;

        }
    }
    outfile.close();
    // 输出总体成绩
    cout << "-------------------------------" << endl;
    cout << "回答正确题目占比: " << correctCount << "/" << numQuestions << endl;
    cout << "注:错题已保留在“错题本.txt”中" << endl;
    cout << "-------------------------------";

    return 0;
}

三、总结
通过本次结对编程我们体会到看似简单的题目其实有很多细节问题需要注意,因为是两个人一起写一个项目,所以这里就明显的体现出注释的重要性。在面对同一个问题时由于两个人的想法不一致有很多种方法去解答,我们共同寻找最简单明了的方法。同时也通过老师提示一步一步去完成题目中的要求并且也拓展了一些内容,使页面具有个性化。在结对过程中,能力较强的同学可以将知识传授给能力较弱的同学;并且在编程过程中可以有效提高代码质量,减少错误的产生;还可以促进团队合作,增强小组成员的适应性和灵活性。

标签:结对,include,return,num1,软件开发,int,编程,num2,op
From: https://www.cnblogs.com/larheiheihei/p/18153135

相关文章

  • day20-并发编程(下)
    1.多进程开发进程是计算机中资源分配的最小单元;一个进程中可以有多个线程,同一个进程中的线程共享资源;进程与进程之间则是相互隔离。Python中通过多进程可以利用CPU的多核优势,计算密集型操作适用于多进程。1.1进程介绍importmultiprocessingdeftask(): passif__name......
  • 异步编程模型
    本文内容异步编程提升响应能力异步方法易于编写异步方法的运行机制API异步方法显示另外6个通过使用异步编程,你可以避免性能瓶颈并增强应用程序的总体响应能力。但是,编写异步应用程序的传统技术可能比较复杂,使它们难以编写、调试和维护。C#支持简化的方法,即异步编程,它......
  • 认识一下JavaScrip中的元编程
    本文分享自华为云社区《元编程,使代码更具描述性、表达性和灵活性》,作者:叶一一。背景去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。没有计划的阅读,收效甚微。新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一......
  • Windows编程系列:设置资源管理器背景
    偶然的机会,在github上发现了一个有趣且优秀的项目,https://github.com/Maplespe/explorerTool。这里学习了一下,并顺带学习了一下涉及的相关知识点。不得不感叹作者的厉害之处,能想到这种方法。 主要实现原理是:1、通过ApiHook,在调用CreateWindows函数创建窗口时,如果是资源管理器......
  • 实验3_C语言函数应用编程
    Task11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn)......
  • Python企业面试题5 —— 网络编程和并发
    1.简述进程、线程和协程的区别以及应用场景?#进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度。#线程:拥有自己独立的栈和共享的堆,线程也由操作系统调度。#协程和线程:协程避免了无意义的调度,由此可以提高性能;但同时协程失去了线程使用多CPU的能力。进程与......
  • linux系统是未来_大小写敏感_case_sensitive_编程原生态
    修改py文件......
  • 实验3 C语言函数应用编程
    //task1.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明in......
  • 实验3 C语言函数应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint......
  • 结对编码-软件开发与创新课程设计
    一、题目及运行环境1.小组成员2252331与22523362.题目小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正......