结对编程 300道四则运算
- 小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案。
–需要检查答案是否正确,并且保证答案在 0..100 之间
–尽可能地多设置一些条件
以C++编写,回答111直接结束运行
运行截图:
代码:
#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