结对编程-四则运算
要求:
小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案。
–需要检查答案是否正确,并且保证答案在 0..100 之间
–尽可能地多设置一些条件
也可以让同学们自选一个小应用程序进行结对编程的开发
请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)
我们实现了一个生成 一百以内计算结果的 / 带优先级的 四则运算生成器
我们采用表达式树生成了带括号的四则运算表达式,并使用C#特有的DataTable对结果进行计算,递归的约束计算结果为100以内的浮点数。
我们首先生成问题
然后输出答案
为了锻炼小学生们的计算能力和四舍五入的能力,为了保证题目的难度,我们的结果几乎都是小数,小学生哥开心坏了!!
using System;
using System.Collections.Generic;
class Program
{
static Random random = new Random();
static void Main()
{
// 存储符合条件的表达式和答案
List<string> expressions = new List<string>();
List<string> expressionsWithResults = new List<string>();
while (expressions.Count < 300)
{
// 生成随机算术表达式
string expression = GenerateExpression(3); // 递归深度可以根据需要调整
// 计算表达式的结果
double result = EvaluateExpression(expression);
// 检查结果是否小于 100
if (result < 100)
{
// 将符合条件的表达式添加到列表中
expressions.Add($"{expression} = ");
expressionsWithResults.Add($"{expression} = {result}");
}
}
// 输出表达式 = 空白
Console.WriteLine("表达式 = <空白>:");
foreach (string expr in expressions)
{
Console.WriteLine(expr);
}
// 输出表达式 = 答案
Console.WriteLine("\n表达式 = 答案:");
foreach (string exprWithResult in expressionsWithResults)
{
Console.WriteLine(exprWithResult);
}
}
// 生成随机算术表达式
static string GenerateExpression(int depth)
{
// 在特定深度时可能返回一个操作数(终止条件)
if (depth == 0)
{
return random.Next(1, 101).ToString();
}
// 随机选择运算符
char[] operators = { '+', '-', '*', '/' };
char op = operators[random.Next(operators.Length)];
// 递归生成左右表达式
string leftExpression = GenerateExpression(depth - 1);
string rightExpression = GenerateExpression(depth - 1);
// 使用括号将左右表达式包裹起来
return $"({leftExpression} {op} {rightExpression})";
}
// 计算算术表达式的结果
static double EvaluateExpression(string expression)
{
// 使用 DataTable 来计算表达式的结果
// 请注意,这种方式在某些情况下可能存在安全问题
System.Data.DataTable dt = new System.Data.DataTable();
object result = dt.Compute(expression, string.Empty);
return Convert.ToDouble(result);
}
}
结对者:2252710
标签:结对,string,C#,四则运算,result,expression,表达式
From: https://www.cnblogs.com/yzp0607/p/18138839