结对编程 300道四则运算

  1. 小学老师要每周给同学出300道四则运算练习题。
    –这个程序有很多种实现方式:

C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案。

–需要检查答案是否正确,并且保证答案在 0..100 之间

–尽可能地多设置一些条件

以C++编写,回答111直接结束运行
运行截图:
image

image

代码:

#include <iostream>
#include <cstdlib>
#include <ctime>

int generateNumber(int max) {
    return rand() % (max + 1);
}

char generateOperator() {
    char operators[] = {'+', '-', '*', '/'};
    int index = rand() % 4;
    return operators[index];
}

float calculateAnswer(float num1, char oper1, float num2, char oper2, float num3) {
    float answer;
    switch (oper1) {
        case '+':
			switch (oper2) {
        		case '*':
        		    return answer = num1+num2*num3;
        		case '/':
        		    return answer = num1+num2/num3;
			}
            answer = num1 + num2;
            break;
        case '-':
			switch (oper2) {
        		case '*':
        		    return answer = num1-num2*num3;
        		case '/':
        		    return answer = num1-num2/num3;
			}
            answer = num1 - num2;
            break;
        case '*':
            answer = num1 * num2;
            break;
        case '/':
            answer = num1 / num2;
            break;
    }
    switch (oper2) {
        case '+':
            answer += num3;
            break;
        case '-':
            answer -= num3;
            break;
        case '*':
            answer *= num3;
            break;
        case '/':
            answer /= num3;
            break;
    }
    return answer;
}

int main() {

	std::cout << "start" << std::endl;
	getchar();

    int correctAnswers = 0;
    int incorrectAnswers = 0;

	int i = 0;
    float num1;
    float num2;
    char oper1;
    float num3;
    char oper2;
    float answer;

    for (i = 0; i < 300; i++) {
        num1 = generateNumber(100);
        num2 = generateNumber(100);
        oper1 = generateOperator();
        num3 = generateNumber(100);
        oper2 = generateOperator();
        answer = calculateAnswer(num1, oper1, num2, oper2, num3);

        if (answer >= 0 && answer <= 100 && num2 != 0 && num3 != 0 && answer == (int)answer) {
			
    		std::cout << "Total questions: " << i << std::endl;
    		std::cout << "Correct answers: " << correctAnswers << std::endl;
    		std::cout << "Incorrect answers: " << incorrectAnswers << std::endl;

            std::cout << "Question " << (i + 1) << ": " << num1 << " " << oper1 << " " << num2 << " " << oper2 << " " << num3 << " = ";
            int userAnswer;
            std::cin >> userAnswer;

            if (userAnswer == answer) {
                std::cout << "Correct!" << std::endl;
                correctAnswers++;
            } else if (userAnswer == 111){
				break;
			} else {
                std::cout << "Incorrect! The correct answer is " << answer << std::endl;
                incorrectAnswers++;
            }
        } else {
            i--;
        }
    }

    std::cout << "Total questions: " << i << std::endl;
    std::cout << "Correct answers: " << correctAnswers << std::endl;
    std::cout << "Incorrect answers: " << incorrectAnswers << std::endl;

	getchar();

    return 0;
}

学号:2252715

posted @ 2024-04-17 01:02  一半斩啖  阅读(7)  评论(0编辑  收藏  举报