c# 基础习题答案 20240709

一、实现一个冒泡排序函数

using System;public class Program
{public static void Main(){int[] arr = { 22,11,33 };BubbleSort(arr);foreach (var item in arr){Console.Write(item + " ");}Console.WriteLine();}// 冒泡排序函数public static void BubbleSort(int[] array){for (int i = 0; i < array.Length; i++){for (int j = i; j < array.Length; j++){if (array[i] < array[j]){int temp = array[j];array[j] = array[i];array[i] = temp;}}}}
}

二、实现一个二分法函数

   class Program{static void Main(string[] args){                                         // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16, 17, 18,                Console.WriteLine(TestFun(new int[19] { 1,2,3,4,5,6,7,8,9,9,11,11,11,11,14,15,119,122,133},119));Console.ReadLine();}private static int TestFun(int[] source, int target){//数组左边界索引值int left = 0;//数组的右边界索引值int right = source.Length;//数组的中位值的索引值int mid = 0;//在循环中,根据中位值与目标值对比,更新左(右)边界的值,从而缩小检索范围,直到找到目标值。while(left <= right){   //每循环一次,中位值索引也要随着左(右)边界的改变而改变mid = (left + right) / 2;if(source[mid].Equals(target)){return mid;}      //中位值在目标值左边时更新左边界索引else if(source[mid] < target){left = mid + 1;}    //中位值在目标值右边时更新右边界索引else if(source[mid] > target){right = mid - 1;}}return -1;}}

三、写出继承、封装、多态的定义,并根据定义写出对应代码示例

1. 继承(Inheritance):
  • 继承允许一个类(称为子类或派生类)基于另一个类(称为父类或基类)的定义来构建。子类继承了父类的字段和方法,可以在此基础上添加新的功能或修改现有功能。
  • 示例代码:
// 父类
public class Animal
{public string Name { get; set; }public virtual void Speak(){Console.WriteLine("Animal speaks");}
}// 子类继承父类
public class Dog : Animal
{public override void Speak(){Console.WriteLine("Woof!");}
}// 使用继承后的子类
class Program
{static void Main(){Dog myDog = new Dog();myDog.Name = "Buddy";myDog.Speak(); // 输出: "Woof!"}
}
2. 封装(Encapsulation):
  • 封装是将数据(字段)和操作数据的方法(函数)封装在一个类中的概念。通过使用访问修饰符来限制对类的部分内容的访问,可以控制对象的访问级别和安全性。

  • 示例代码:

public class Car
{private int _mileage; // Private variablepublic void Drive(int miles){_mileage += miles;}public int GetMileage(){return _mileage;}
}class Program
{static void Main(){Car myCar = new Car();myCar.Drive(100);Console.WriteLine(myCar.GetMileage()); // 输出: 100}
}
3. 多态(Polymorphism):
  • 多态允许使用同一个方法名在不同的类中产生不同的行为。这提高了代码的灵活性,可以根据不同的对象类型调用相同的方法而表现出不同的行为。
  • 示例代码:
public class Animal
{public virtual void Speak(){Console.WriteLine("Animal speaks");}
}public class Dog : Animal
{public override void Speak(){Console.WriteLine("Woof!");}
}public class Cat : Animal
{public override void Speak(){Console.WriteLine("Meow!");}
}class Program
{static void MakeSound(Animal animal){animal.Speak();}static void Main(){Animal myDog = new Dog();Animal myCat = new Cat();MakeSound(myDog); // 输出: "Woof!"MakeSound(myCat); // 输出: "Meow!"}
}

四、写出函数重载的定义,并根据定义写出对应代码示例

  • 函数重载(Function
    Overloading)是指在同一个类中包含多个同名函数,但是这些函数的参数类型、参数个数或顺序不同。这样,可以通过传递不同类型的参数或不同数量的参数来调用同一个函数名,而编译器能够根据传入的参数类型和数量来分辨到底要调用哪个函数。
public class Calculator
{public int Add(int a, int b){return a + b;}public double Add(double a, double b){return a + b;}public int Add(int a, int b, int c){return a + b + c;}public int Add(params int[] numbers){int sum = 0;foreach (var number in numbers){sum += number;}return sum;}
}class Program
{static void Main(){Calculator calculator = new Calculator();int result1 = calculator.Add(1, 2); // 使用第一个Add函数double result2 = calculator.Add(1.5, 2.5); // 使用第二个Add函数int result3 = calculator.Add(1, 2, 3); // 使用第三个Add函数int result4 = calculator.Add(1, 2, 3, 4, 5); // 使用第四个Add函数,使用params特性Console.WriteLine($"Result 1: {result1}");Console.WriteLine($"Result 2: {result2}");Console.WriteLine($"Result 3: {result3}");Console.WriteLine($"Result 4: {result4}");}
}

五、下面是创建三张数据表并插入数据的SQL语句,以及基于这些数据表的20条基础SQL查询问题。

表1: 员工 (Employees)
– 创建员工表

CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName NVARCHAR(50),LastName NVARCHAR(50),DepartmentID INT,Salary DECIMAL(10, 2),HireDate DATE
);

– 插入员工数据

INSERT INTO Employees VALUES
(1, '张伟', '李', 101, 60000.00, '2020-01-15'),
(2, '王芳', '刘', 102, 75000.00, '2019-05-20'),
(3, '李娜', '张', 101, 55000.00, '2021-03-10'),
(4, '陈杰', '王', 103, 65000.00, '2018-11-28'),
(5, '赵强', '刘', 102, 70000.00, '2020-09-05');

表2: 部门 (Departments)
– 创建部门表

CREATE TABLE Departments (DepartmentID INT PRIMARY KEY,DepartmentName NVARCHAR(100),Manager NVARCHAR(100)
);

– 插入部门数据

INSERT INTO Departments VALUES
(101, '人力资源部', '张经理'),
(102, '财务部', '李经理'),
(103, '信息技术部', '王经理');

表3: 订单 (Orders)
– 创建订单表

CREATE TABLE Orders (OrderID INT PRIMARY KEY,EmployeeID INT,OrderDate DATE,TotalAmount DECIMAL(10, 2)
);

– 插入订单数据

INSERT INTO Orders VALUES
(1, 1, '2023-01-10', 1500.00),
(2, 2, '2023-01-12', 2500.00),
(3, 1, '2023-02-05', 1800.00),
(4, 3, '2023-02-15', 3200.00),
(5, 2, '2023-03-20', 2000.00);

20条基础SQL查询问题

  1. 查询所有员工的信息。
SELECT * FROM Employees;
  1. 查询所有薪资大于60000的员工。
SELECT * FROM Employees WHERE Salary > 60000.00;
  1. 列出所有部门及其经理姓名。
SELECT DepartmentName, Manager FROM Departments;
  1. 统计每个部门的员工数量。
SELECT d.DepartmentName, COUNT(e.EmployeeID) AS EmployeeCount
FROM Employees e
JOIN Departments d ON e.DepartmentID = d.DepartmentID
GROUP BY d.DepartmentName;
  1. 查询2020年之前入职的员工。
SELECT * FROM Employees WHERE HireDate < '2020-01-01';
  1. 计算人力资源部的总薪资预算。
SELECT SUM(Salary) AS TotalSalaryBudget
FROM Employees
WHERE DepartmentID = 101;
  1. 查询所有员工中最早和最新的入职日期。
SELECT MIN(HireDate) AS OldestHireDate, MAX(HireDate) AS NewestHireDate
FROM Employees;
  1. 按薪资从高到低排序查询所有员工。
SELECT * FROM Employees ORDER BY Salary DESC;
  1. 计算所有员工的平均薪资。
SELECT AVG(Salary) AS AverageSalary FROM Employees;
  1. 查询2023年1月的所有订单。
SELECT * FROM Orders WHERE OrderDate >= '2023-01-01' AND OrderDate < '2023-02-01';
  1. 列出所有下过订单的员工。
SELECT DISTINCT e.FirstName, e.LastName
FROM Employees e
JOIN Orders o ON e.EmployeeID = o.EmployeeID;
  1. 查询员工及其对应的部门名称。
SELECT e.FirstName, e.LastName, d.DepartmentName
FROM Employees e
JOIN Departments d ON e.DepartmentID = d.DepartmentID;
  1. 统计总订单数量。
SELECT COUNT(*) AS TotalOrders FROM Orders;
  1. 查询订单金额最高的订单。
SELECT MAX(TotalAmount) AS HighestOrderAmount FROM Orders;
  1. 计算每个订单的平均金额。
SELECT AVG(TotalAmount) AS AverageOrderAmount FROM Orders;
  1. 列出所有员工及其下的订单(如果有的话)。
SELECT e.FirstName, e.LastName, o.OrderID, o.TotalAmount
FROM Employees e
LEFT JOIN Orders o ON e.EmployeeID = o.EmployeeID;
  1. 查询没有下过订单的员工。
SELECT e.FirstName, e.LastName
FROM Employees e
LEFT JOIN Orders o ON e.EmployeeID = o.EmployeeID
WHERE o.OrderID IS NULL;
  1. 计算公司的总薪资支出。
SELECT SUM(Salary) AS TotalSalaryExpense FROM Employees;
  1. 查询薪资最高的员工。
SELECT TOP 1 * FROM Employees ORDER BY Salary DESC;
  1. 查询2021年入职的员工。
SELECT * FROM Employees WHERE YEAR(HireDate) = 2021;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XTuner 微调 LLM:1.8B, 部署

扫码立刻参与白嫖A100&#xff0c;书生大模型微调部署学习活动。亲测有效 内容来源&#xff1a;Tutorial/xtuner/personal_assistant_document.md at camp2 InternLM/Tutorial GitHubLLM Tutorial. Contribute to InternLM/Tutorial development by creating an account on G…

从零手写实现 nginx-26-rewrite url 重写

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

设计无缝体验:交互设计流程全解析

完整的产品交互设计流程是什么&#xff1f;完整的产品交互设计流程包括研究用户需求、指定信息架构、制作产品原型、进行用户测试和实时发布产品。交互设计就是从人与产品之间的关系入手&#xff0c;通过产品设计来满足大众的日常需求。随着网络技术的流行&#xff0c;产品交互…

工业机床CNC设备如何上云?

工业机床CNC设备如何上云&#xff1f; 工业机床的计算机数控&#xff08;CNC&#xff09;设备实现远程监控数据上云&#xff0c;是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程&#xff0c;还能通过大数据分析提升生产效率与产品质量&…

Java包装类简单认识泛型

1 包装类 在 Java 中&#xff0c;由于基本类型不是继承自 Object &#xff0c;为了在泛型代码中可以支持基本类型&#xff0c; Java 给每个基本类型都对应了 一个包装类型。 例如我们之前的基本数据类型和包装类。 1. 装箱和拆箱 2.自动装箱和自动拆箱 2.泛型 1.什么是泛型 …

【C++项目】从零实现一个在线编译器

前言 身为一名程序员&#xff0c;想必大家都有接触过像leetcode这样的刷题网站&#xff0c;不知你们在刷题的过程中是否思考过一个问题&#xff1a;它们是如何实现在线编译运行的功能。如果你对此感到好奇&#xff0c;那么本文将一步步带你来实现一个简易在线编译器。 项目概…

vue3+antdv仿百度网盘样式文件夹管理组件

实现&#xff1a; 默认进入页面时&#xff0c;文件夹全选&#xff1b;文件夹状态&#xff0c;以及文件夹内的文件选择状态&#xff0c;与组件联动文件夹数量&#xff0c;根据后端数据动态生成 实现思路&#xff1a; 将后端数据存到vuex中&#xff0c;增加&#xff08;多选框…

学懂C#编程:C# 索引器(Indexer)的概念及用法

C#中的索引器&#xff08;Indexer&#xff09;是一种特殊的成员&#xff0c;它允许类或结构的实例像数组那样通过索引来访问其内部的数据。索引器提供了一种灵活的方式来暴露集合或数组类型的内部数据&#xff0c;使得客户端代码可以使用类似于数组下标的语法来访问类的成员&am…

LAMP万字详解(概念、构建步骤)

目录 LAMP Apache 起源 主要特点 软件版本 编译安装httpd服务器 编译安装的优点 操作步骤 准备工作 编译 安装 优化执行路径 添加服务 守护进程 配置httpd 查看 Web 站点的访问情况 虚拟主机 类型 部署基于域名的虚拟主机 为虚拟主机提供域名解析&#xff…

机器人三定律及伦理分析

全世界的机器人定律并没有一个统一的标准或体系&#xff0c;但是在科学文献中&#xff0c;最广为人知的是由科幻小说家阿西莫夫提出的“机器人三定律”。本文将以这些定律为基础&#xff0c;分析现有的机器人伦理和实际应用中的问题&#xff0c;给出若干实例&#xff0c;并对相…

[Flutter] Android Studio pub get 不起作用

前情&#xff1a;在文件中将webview_flutter: ^4.7.0改为webview_flutter: ^4.8.0&#xff0c;又改回webview_flutter: ^4.7.0&#xff0c;发现本地库的版本一直是8&#xff0c;pub get怎么都不起作用&#xff08;只对webview_flutter不起作用&#xff0c;其他的都更新了&#…

EPSON LQ80KF II驱动 打印机 0x00000003e3

1.添加打印机 2.按名次选择共享打印机,输入共享打印机ip 3.选择创建新端口 4.选择打印机驱动

[安洵杯 2019]easy_serialize_php

源码&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user"] guest; …

申请商标用什么颜色:企业和个人申请注册商标攻略!

在申请注册商标到底要用什么颜色&#xff0c;许多初次申请注册主体都不是特别清楚&#xff0c;普推知产商标老杨建议&#xff0c;在一般情况下建议尽量用黑白色&#xff0c;因为商标用黑白色在使用时可以着任何色。 在用黑色申请注册成功&#xff0c;别的主体用其它颜色要在同…

制作骰子-美团2023笔试(codefun2000)

题目链接 制作骰子-美团2023笔试(codefun2000) 题目内容 塔子哥是一个喜欢手工制作的人&#xff0c;他经常用各种材料制作一些有趣的物品。他最近想要制作一个骰子&#xff0c;但是他不想用普通的六面骰子&#xff0c;他想要制作一个更有挑战性的骰子。他想要制作一个总共有 n…

【python】PyQt5事件传递,鼠标动作捕获,键盘按键捕获原理与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

jQuery Mobile 实例

jQuery Mobile 实例 引言 jQuery Mobile 是一个基于 jQuery 的轻量级移动设备友好的开发框架,旨在创建响应式、跨平台的移动应用程序和网站。它提供了一套丰富的用户界面组件和触摸优化事件,使得开发者能够快速构建出适用于各种移动设备的用户界面。本篇文章将通过一系列实…

部署前端项目

常见部署方式有&#xff1a;静态托管服务、服务器部署 1. 静态托管服务 使用平台部署代码&#xff0c;比如 GitHub。 | 创建一个仓库&#xff0c;仓库名一般是 yourGithubName.github.io。 | 将打包后的静态文件文件上传到仓库。 | 在“Settings”&#xff08;选项&#xff0…

C语言编程4:复合赋值,递增递减运算符,局部变量与全局变量,本地变量,转义字符

一篇文章带你玩转C语言基础语法4&#xff1a;复合赋值&#xff0c;递增递减运算符&#xff0c;局部变量与全局变量&#xff0c;本地变量&#xff0c;转义字符 一、复合赋值&#x1f33f; 1.1&#x1f4a0;定义 赋值就是给任意一个变量或者常量赋一个值&#xff0c;这个值可以…

javaweb零碎知识3

// 假设您已经导入了 axios import axios from axios;// 获取表单元素 const form document.getElementById(myForm);// 为表单添加 submit 事件监听器 form.addEventListener(submit, function(e) {// 阻止表单的默认提交行为e.preventDefault();// 创建 FormData 对象并从表…