习题20240803(未完成)

devtools/2024/9/19 7:09:25/ 标签: c#, linq, 设计模式

文章目录

    • 一、Linq练习 使用Linq完成下面练习
      • 1.题目: 返回 numbers 列表中的所有数字。
      • 2.题目: 返回 numbers 列表中的所有偶数。
      • 3.题目: 返回 numbers 列表中所有大于10的数字。
      • 4.题目: 返回 students 列表中所有学生的姓名。
      • 5.题目: 返回 numbers 列表按升序排序后的数字。
      • 6.题目: 按年龄降序排序 students 列表。
      • 7.题目: 返回 numbers 列表的前5个数字。
      • 8.题目: 返回 numbers 列表中的去重数字(如果有重复的话)。
      • 9.题目: 计算 numbers 列表中所有数字的平均值。
      • 10.题目: 计算 numbers 列表中所有数字的总和。
      • 11.题目: 将 students 列表按学生年龄分组。
      • 12.题目: 将 subjects 列表按学科分组,并计算每个学科的学生数量。
      • 13.题目: 将 students 列表中的姓名转换为大写字母。
      • 14.题目: 合并两个 numbers 列表,去重并排序。
      • 15.题目: 返回 students 列表中姓名包含字母“A”的学生。
      • 16.题目: 计算 students 列表中每个字母出现的次数。
      • 17.题目: 连接 students 和 subjects 列表,返回学生姓名和课程名的配对。
      • 18.题目: 查找 numbers 列表中的最小值和最大值。
      • 19.题目: 返回 numbers 列表中的前3个最大的数字。
      • 20.题目: 创建一个匿名类型,包含 students 列表中的学生姓名和年龄,并返回结果。
      • 21.题目: 将 students 列表转换为字典,其中学生姓名作为键,年龄作为值。
      • 22.题目: 给定一个包含销售记录(日期和金额)的列表,按月分组,并计算每个月的销售总额。
      • 23.题目: 返回 numbers 列表中所有同时满足条件A(大于10)和条件B(是偶数)的数字。
      • 24.题目: 给定一个XML数据,返回价格大于100的产品。
      • 25.题目: 对 students 列表中的学生成绩进行链式操作:筛选出年龄大于20的学生,按年龄降序排序,然后返回前2名学生的姓名。
    • 二、使用C#实现观察者模式,并说明其模式的适用场景
    • 三、使用C#实现策略模式,并说明其模式的适用场景
    • 四、使用C#实现状态模式,并说明其模式的适用场景
    • 五、使用C#实现责任链模式,并说明其模式的适用场景
    • 六、使用C#实现备忘录模式,并说明其模式的适用场景
    • 七、使用C#实现访问者模式,并说明其模式的适用场景
    • 八、使用C#实现模板方法模式,并说明其模式的适用场景

一、Linq练习 使用Linq完成下面练习

1.题目: 返回 numbers 列表中的所有数字。

IEnumerable<int> items = numbers;foreach(var item in items){Console.WriteLine(item);}

2.题目: 返回 numbers 列表中的所有偶数。

IEnumerable<int> items = numbers.Where(i=>i%2==0);foreach(var item in items){Console.WriteLine(item);}

3.题目: 返回 numbers 列表中所有大于10的数字。

IEnumerable<int> items = numbers.Where(i=>i>10);foreach(var item in items){Console.WriteLine(item);}

4.题目: 返回 students 列表中所有学生的姓名。

 var items = students.Select(n=>n.Name);foreach(var item in items){Console.WriteLine(item);}

5.题目: 返回 numbers 列表按升序排序后的数字。

var items = numbers.OrderBy(n =>numbers);foreach(var item in items){Console.WriteLine(item);

6.题目: 按年龄降序排序 students 列表。

var items = students.Select(n => new {n.Name, n.Age}).OrderByDescending(n =>n.Age);foreach(var item in items){Console.WriteLine(item);}

7.题目: 返回 numbers 列表的前5个数字。

var items = numbers.Take(5);foreach(var item in items){Console.WriteLine(item);}

8.题目: 返回 numbers 列表中的去重数字(如果有重复的话)。

var items = numbers.Distinct();foreach(var item in items){Console.WriteLine(item);}

9.题目: 计算 numbers 列表中所有数字的平均值。

var items = numbers.Average();Console.WriteLine(items);

10.题目: 计算 numbers 列表中所有数字的总和。

var items = numbers.Sum();Console.WriteLine(items);

11.题目: 将 students 列表按学生年龄分组。

var items = students.GroupBy(n => n.Age);//Console.WriteLine(items);//foreach (var item in items)//{//    Console.WriteLine(item);//}foreach(var item in items){Console.WriteLine(item.Key);foreach(var ite in item){Console.WriteLine($"\t{ite.Name},{ite.Age}");}}

12.题目: 将 subjects 列表按学科分组,并计算每个学科的学生数量。

var items = subjects.GroupBy(n => n.SubjectName).Select(n => new { count = n.Count() });//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

13.题目: 将 students 列表中的姓名转换为大写字母。

var items = students.Select(n => new {Name=n.Name});//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item.ToString().ToUpper());}

14.题目: 合并两个 numbers 列表,去重并排序。

var items = numbers.Concat(from n in numbers2 where !numbers.Contains(n) select n).OrderBy(n => n);//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

15.题目: 返回 students 列表中姓名包含字母“A”的学生。

var items = students.Select (n=>n.Name).Where(n=>n.IndexOf("A")>-1);//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

16.题目: 计算 students 列表中每个字母出现的次数。

var items = students.Select(student => student.Name).Count(n=>n.IndexOf('a')>-1);Console.WriteLine(items);

17.题目: 连接 students 和 subjects 列表,返回学生姓名和课程名的配对。

var items = from student in studentsjoin subject in subjectson student.Name equals subject.StudentName into tgroupselect new { Name = student.Name, SubjectName = tgroup };//Console.WriteLine(items);//foreach (var item in items)//{//    Console.WriteLine(item);//}foreach (var item in items){Console.WriteLine(item.Name);foreach (var ite in item.SubjectName){Console.WriteLine("   {0}",ite.SubjectName);}}

18.题目: 查找 numbers 列表中的最小值和最大值。

var items = numbers.Min(n => n);Console.WriteLine(items);
var items = numbers.Max(n => n);Console.WriteLine(items);

19.题目: 返回 numbers 列表中的前3个最大的数字。

var items = numbers.OrderByDescending(n=>n).Take(3);//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

20.题目: 创建一个匿名类型,包含 students 列表中的学生姓名和年龄,并返回结果。

var items = students.Select(n => new { name = n.Name, age = n.Age, });//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

21.题目: 将 students 列表转换为字典,其中学生姓名作为键,年龄作为值。

var dict=students.ToDictionary(x=>x.Name, x => x.Age);var value = dict["Alice"];Console.WriteLine(value);

22.题目: 给定一个包含销售记录(日期和金额)的列表,按月分组,并计算每个月的销售总额。

23.题目: 返回 numbers 列表中所有同时满足条件A(大于10)和条件B(是偶数)的数字。

var items = numbers.Where(n => n > 10 && n % 2 == 0);//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

24.题目: 给定一个XML数据,返回价格大于100的产品。

25.题目: 对 students 列表中的学生成绩进行链式操作:筛选出年龄大于20的学生,按年龄降序排序,然后返回前2名学生的姓名。

var items = students.Where(n => n.Age > 20).OrderByDescending(n => n.Age).Take(2).Select(n=>n.Name);//Console.WriteLine(items);foreach (var item in items){Console.WriteLine(item);}

二、使用C#实现观察者模式,并说明其模式的适用场景

三、使用C#实现策略模式,并说明其模式的适用场景

四、使用C#实现状态模式,并说明其模式的适用场景

五、使用C#实现责任链模式,并说明其模式的适用场景

六、使用C#实现备忘录模式,并说明其模式的适用场景

七、使用C#实现访问者模式,并说明其模式的适用场景

八、使用C#实现模板方法模式,并说明其模式的适用场景


http://www.ppmy.cn/devtools/88728.html

相关文章

idea个人常用快捷键设置

个人开发者自查便于新环境配置快速查阅&#xff0c;统一windows与mac快捷键设置&#xff0c;有相同习惯的同学可自取。如果有一天你的快捷键不好用了&#xff0c;请一定记得看这篇文章&#xff0c;整理不易&#xff0c;留下关注再走呗。 基本操作快捷键 操作中文名称操作名快捷…

Qt pdf文件操作

qt对于pdf文件操作&#xff0c;包括pdf文件合并&#xff1b;pdf里面页面重组新的pdf&#xff1b;pdf信息获取&#xff1b;接口如下所示&#xff1a; #pragma once #include <QObject> #include "filetransformhandle_global.h" class FILETRANSFORMHANDLE_EX…

《机器人SLAM导航核心技术与实战》第1季:第8章_激光SLAM系统

视频讲解 【第1季】8.第8章_激光SLAM系统-视频讲解【第1季】8.1.第8章_激光SLAM系统_Gmapping算法-视频讲解【第1季】8.2.第8章_激光SLAM系统_Cartographer算法-视频讲解【第1季】8.3.第8章_激光SLAM系统_LOAM算法-视频讲解 第1季&#xff1a;第8章_激光SLAM系统 先 导 课第…

Linux软件包管理

rpm 1. 介绍 rpm 用于互联网下载包的打包及安装工具&#xff0c;它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager&#xff08;RedHat 软件包管理工具&#xff09;的缩写&#xff0c;类似 windows 的 setup.exe&#xff0c;这一文件…

vLLMcuda安装笔记

1. 引言 最近在部署Qwen模型时&#xff0c;文档上有提到强烈建议用vLLM来部署模型&#xff0c;按照公开的性能测试数据&#xff0c;用vLLM部署Qwen模型的文本推理速度要比transformers部署快3~4倍。带着这个好奇就开始安装尝试&#xff0c;但试下来这个安装过程并没有那么顺利…

【MATLAB源码】机器视觉与图像识别技术示例报告2---铁道口夜间列车通过时速度视觉测量

系列文章目录在最后面,各位同仁感兴趣可以看看! 速度视觉测量 摘要对铁路夜晚环境情况分析视觉测量的流程步骤代码问题最后:总结系列文章目录摘要 随着科技技术的不断发展,由于铁道口夜间交通事故频发,传统的雷达和激光测速方法虽然能够提供准确的数据,但在夜间光线不足…

数学建模--蒙特卡罗随机模拟

目录 蒙特卡罗方法的基本原理 蒙特卡罗方法在优化中的应用 蒙特卡罗方法的优势与局限 优势 局限 典型应用案例 Python代码示例 ​编辑 结论 蒙特卡罗方法在数学建模中的具体应用案例有哪些&#xff1f; 如何改进蒙特卡罗方法以提高计算效率和精度&#xff1f; 蒙特…

关于设计模式你真的理解了吗?到底是哪种工厂模式?

文章目录 一、题目二、代码分析1、ProductFactory接口&#xff1a;2、ConcreteFactory1 和 ConcreteFactory2 类&#xff1a;3、ProductA 和 ProductB 接口&#xff1a;4、具体产品类&#xff08;ConcreteProductA1、ConcreteProductA2、ConcreteProductB1、ConcreteProductB2&…

C++ Smart Pointer 智能指针

Smart Pointer 智能指针 C作为语言层面也提供了&#xff0c;相应的解决方案&#xff0c;即智能指针&#xff0c;auto_ptr。虽然 auto_ptr 己经 deserted 了(引自 Google C 编程规范)&#xff0c;它的后继者&#xff0c;诸如 share_ptr, weak_ptr 灵感均取自于此。 RAII Theor…

搭建jenkins一键部署java项目

一、搭建jenkins 链接: https://pan.baidu.com/s/1jzx15PiyI8EhLd_vg7q8bw 提取码: ydhl 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 直接使用docker导入镜像&#xff0c;运行就好 docker run -di --name jenkins -p 8080:8080 -v /home/jenkins_home:/var/je…

【数据结构】堆的实现

目录 一、堆的概念 1.概念&#xff1a; 2.性质 二.堆的实现 1.用数组定义堆结构struct Heap 2.交换两个数swap函数 3.向下调整算法AdjustDown函数 4.向上调整算法AdjustUp函数 5.初始化堆HeapInit函数 6.销毁堆HeapDestory函数 7.堆的插入HeapPush函数 8.堆的删除H…

C#和S7-1200PLC S7.NET通信

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。这篇博客作为C#的基础系列,和大家分享如何一步步建立一个C#项目完成对S7-1200PLC数据的连续读取。首先创建一个窗体应用。_s7协议批量…

计算机网络-http协议和https的加密原理

HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在万维网&#xff08;World Wide Web&#xff09;上传输超文本的基础协议。它定义了客户端&#xff08;通常是浏览器&#xff09;和服务器之间的文本数据传输格式和规则。以下是HTTP的…

爬虫数据模拟真实设备请求头User-Agent生成(fake_useragent:一个超强的Python库)

在Python开发中&#xff0c;处理HTTP请求时经常需要模拟不同的用户代理&#xff08;User-Agent&#xff09;来绕过网站的反爬虫机制或进行兼容性测试。fake_useragent正是这样一个强大的Python库&#xff0c;它能够生成随机且多样化的用户代理字符串&#xff0c;让你的请求看起…

用依赖倒置和控制反转,突破Golang循环调用限制之后的思考

在软件开发中&#xff0c;随着项目规模的扩大和业务逻辑的复杂化&#xff0c;重构代码变得越来越重要。本文将介绍如何在既有代码基础上&#xff0c;通过依赖倒置&#xff08;DIP&#xff09;和控制反转&#xff08;IoC&#xff09;&#xff0c;实现新增加的代码可以循环引用到…

JAVA(IO流)7.31

ok了家人们今天还是学习IO流&#xff0c; 一.打印流【了解】 1.1 打印流的概述 我们平时使用的System语句就是调用了print()方法和println()方法。 这两个方法都来自于 java.io.PrintStream 类。 作用&#xff1a; 该类能够方便地打印各种数据类型的值&#xff0c;写入数据后…

⌈ 传知代码 ⌋ 利用scrapy框架练习爬虫

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

8.3 day bug

bug1 文件名字写错了&#xff0c;找了半天bug原因 freecodecamp的致敬页的测试验证不通过bug 已经写了display: block;和max-width: 100% 以及通过margin: 0 auto;居中&#xff0c;可是却通不过验证 问了通义千问 通义帮我修改后的html代码为 <!DOCTYPE html> 2<h…

[知识点]-[最短路]

单源最短路径 代码&#xff1a; #include<bits/stdc.h> #define int long longusing namespace std;const int N 1e510;int n,m,A; int dis[N]; int vis[N];vector<pair<int,int> > e[N];void spfa() {for(int i1;i<n;i) dis[i] 1e18;queue<int &g…

【MySQL】常用数据类型

目录 数据类型 数据类型分类 数值类型 tinyint类型 bit类型 小数类型 float decimal 字符串类型 char varchar 日期和时间类型 enum和set 数据类型 数据类型分类 数值类型 tinyint类型 tinyint类型只占用一个字节类似于编程语言中的字符char。有带符号和无符号两…