当前位置: 首页 > news >正文

C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南

一、变量类型转换:隐式与显式的门道

(一)隐式转换:编译器的 “贴心小助手”

        隐式转换是编译器自动进行的类型转换,无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时,就像把小盒子里的东西放进大盒子,完全没问题。例如:

short num1 = 100; 
int num2 = num1; 

        在这个例子中,short类型的num1可以直接赋值给int类型的num2,因为int类型的取值范围比short大,能够容纳short类型的值。常见的隐式转换关系有:byte可以转换为shortushortintuintlongulongfloatdoubledecimal等;short可以转换为intlongfloatdoubledecimal 等。


(二)显式转换:手动掌控数据 “乾坤大挪移”

        当需要把取值范围大的数据类型赋值给取值范围小的数据类型时,就像把大盒子里的东西放进小盒子,可能会出现装不下的情况,这时就需要显式转换。显式转换需要开发者明确告诉编译器要进行类型转换,使用(目标类型)的语法。例如:

int bigNumber = 30000; 
short smallNumber = (short)bigNumber; 

        不过要注意,显式转换可能会导致数据丢失或精度降低。比如上面的例子,如果bigNumber的值超出了short类型的取值范围,转换后得到的smallNumber的值可能就不是预期的了。


(三)使用Convert类进行特殊转换

        除了基本的隐式和显式转换,在处理数字字符串和数字类型之间的转换时,Convert类提供了非常实用的方法。比如将字符串转换为整数:

string numberStr = "123";
int number = Convert.ToInt32(numberStr); 

   Convert类还提供了ToDoubleToFloatToDecimal等方法,可以满足不同类型之间的转换需求。但在使用时要确保字符串内容是有效的数字格式,否则会抛出异常。例如,将非数字字符串"abc"转换为数字就会出错。


二、复杂变量类型:拓展编程的边界

(一)枚举类型:让代码表意更清晰

        在编程中,我们经常会遇到一些具有固定取值集合的数据。比如在游戏开发中,游戏角色的状态可能有 “站立”“奔跑”“跳跃”“死亡” 等。如果使用普通的整数来表示这些状态,代码的可读性会很差,而且容易出错。这时候枚举类型就派上用场了。
枚举类型的定义格式如下:

enum GameCharacterState
{Standing,Running,Jumping,Dead
}

        使用枚举类型声明变量并赋值:

GameCharacterState state = GameCharacterState.Running; 

        枚举类型中的每个值默认是int类型,并且从 0 开始依次递增。也可以手动指定每个枚举值对应的整数值:

enum Weekday
{Monday = 1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}

        在这个例子中,Monday被指定为 1,后续的枚举值会依次递增。枚举类型在提高代码可读性和可维护性方面有着显著的优势,在大型项目中,合理使用枚举能让代码逻辑更加清晰。


(二)结构:整合相关数据的 “收纳盒”

        结构是一种可以将多个不同类型的数据组合在一起的数据类型。当我们需要表示一个具有多个相关属性的对象时,结构就非常有用。比如表示一个二维点的坐标,需要横坐标和纵坐标:

struct Point2D
{public int X;public int Y;
}

        这里使用struct关键字定义了Point2D结构,它包含两个int类型的成员XY。声明和使用结构变量:

Point2D point = new Point2D();
point.X = 10;
point.Y = 20;

也可以在声明时初始化结构变量:

Point2D anotherPoint = new Point2D { X = 5, Y = 8 }; 

        结构在内存分配和使用上有其特点,它是值类型,存储在栈上,相比于引用类型,在处理小型、简单的数据集合时,具有更高的效率。


(三)数组:批量存储数据的 “集装箱”

        数组是用于存储多个相同类型数据的集合。在实际编程中,当需要处理大量同类型数据时,数组能极大地简化代码。例如,存储一个班级学生的考试成绩:

int[] scores = new int[30]; 

        这里声明了一个包含 30 个元素的int类型数组scores,数组元素默认初始化为 0。数组的初始化方式有多种,除了上述方式,还可以直接初始化元素值:

int[] scores = { 85, 90, 78, 88, 92 }; 

        或者在声明时指定大小并初始化:

int[] scores = new int[5] { 85, 90, 78, 88, 92 }; 

        访问数组元素通过索引进行,索引从 0 开始。例如,获取数组中第一个元素的值:

int firstScore = scores[0]; 

        遍历数组是常见的操作,有多种方式可以实现:

for循环遍历

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{Console.WriteLine(numbers[i]);
}

while循环遍历

    int[] numbers = { 1, 2, 3, 4, 5 };
    int i = 0;
    while (i < numbers.Length)
    {Console.WriteLine(numbers[i]);i++;
    }
    

    foreach循环遍历

      int[] numbers = { 1, 2, 3, 4, 5 };
      foreach (int number in numbers)
      {Console.WriteLine(number);
      }
      

          foreach循环适用于只需要读取数组元素的场景,它更加简洁,但不能直接修改数组元素的值。如果需要在遍历过程中修改元素值,还是要使用forwhile循环。


              数组还支持多维数组,比如二维数组可以用来表示矩阵:

      int[,] matrix = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; 
      

              访问二维数组元素时需要指定两个索引:

      int element = matrix[1, 1]; 
      

      三、字符串:特殊的 “字符数组”

              在 C# 中,字符串可以看作是字符char类型的数组,这使得我们可以像操作数组一样操作字符串。例如,获取字符串中指定位置的字符:

      string name = "Alice";
      char firstChar = name[0]; 
      

      通过Length属性可以获取字符串的长度:

      int nameLength = name.Length; 
      

      (一)字符串遍历与反转

              遍历字符串的每个字符可以使用循环,就像遍历数组一样。下面是使用for循环反向输出字符串的示例:

      string input = "Hello, World!";
      for (int i = input.Length - 1; i >= 0; i--)
      {Console.Write(input[i]);
      }
      

      (二)字符串常用方法

      1.大小写转换ToLower()方法将字符串转换为小写,ToUpper()方法将字符串转换为大写

      string original = "Hello, World!";
      string lowerCase = original.ToLower(); 
      string upperCase = original.ToUpper(); 
      

      2.去除空白字符Trim()方法去除字符串两端的空白字符,TrimStart()去除字符串开头的空白字符,TrimEnd()去除字符串结尾的空白字符

      string strWithSpaces = "   Hello, World!   ";
      string trimmed = strWithSpaces.Trim(); 
      string trimmedStart = strWithSpaces.TrimStart(); 
      string trimmedEnd = strWithSpaces.TrimEnd(); 
      

      3.分割字符串Split()方法根据指定的分隔符将字符串分割成字符串数组。

      string sentence = "Apple, Banana, Orange";
      string[] fruits = sentence.Split(','); 
      

      四.题目

      1. 寻找 100 到 999 之间的水仙花数

      题目改编:在 100 到 999 这个范围内,找出所有满足 “水仙花数” 条件的数字。水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如 153 = 1³ + 5³ + 3³。

      using System;class NarcissisticNumbers
      {static void Main(){for (int num = 100; num < 1000; num++){int hundreds = num / 100;int tens = (num / 10) % 10;int units = num % 10;if (Math.Pow(hundreds, 3) + Math.Pow(tens, 3) + Math.Pow(units, 3) == num){Console.WriteLine(num);}}}
      }
      

      代码解释

      • 使用 for 循环遍历 100 到 999 之间的所有数字。
      • 对于每个数字,通过除法和取模运算分别获取其百位、十位和个位数字。
      • 计算各位数字的立方和,并与该数字本身进行比较,如果相等则输出该数字。

      2. 可乐兑换问题

      题目改编:已知 3 个可乐空瓶可以换一瓶可乐,现在初始有 364 瓶可乐。请计算总共可以喝到多少瓶可乐,以及最后会剩下多少个空瓶。

      using System;class ColaExchange
      {static void Main(){int totalCola = 364;int emptyBottles = totalCola;while (emptyBottles >= 3){int exchangedCola = emptyBottles / 3;totalCola += exchangedCola;emptyBottles = emptyBottles % 3 + exchangedCola;}Console.WriteLine($"总共可以喝到 {totalCola} 瓶可乐,剩下 {emptyBottles} 个空瓶。");}
      }
      

      代码解释

      • 初始化 totalCola 为初始可乐数量,emptyBottles 也初始化为初始可乐数量。
      • 使用 while 循环,只要空瓶数量大于等于 3,就进行兑换操作。
      • 计算可兑换的可乐数量 exchangedCola,并更新 totalCola 和 emptyBottles 的值。
      • 最后输出总共喝到的可乐数量和剩余的空瓶数量。

      3. 猜数字游戏

      题目改编:计算机随机生成一个 0 到 50 之间的整数,玩家需要猜测这个数字。每次猜测后,计算机根据玩家的猜测结果给出提示(猜大了或猜小了),直到玩家猜对为止。

      using System;class GuessNumberGame
      {static void Main(){Random random = new Random();int secretNumber = random.Next(0, 51);int guess;do{Console.Write("请您输入一个 0 - 50 之间的数:");guess = int.Parse(Console.ReadLine());if (guess < secretNumber){Console.WriteLine($"您猜小了,这个数字比 {guess} 大。");}else if (guess > secretNumber){Console.WriteLine($"您猜大了,这个数字比 {guess} 小。");}else{Console.WriteLine($"恭喜您猜对了,这个数字为:{secretNumber}");}} while (guess != secretNumber);}
      }
      

      代码解释

      • 使用 Random 类生成一个 0 到 50 之间的随机整数 secretNumber
      • 使用 do-while 循环,不断提示玩家输入猜测的数字。
      • 根据玩家的猜测结果给出相应的提示,直到猜对为止。

      4. 字符串加密程序

      题目改编:编写一个应用程序,对用户输入的字符串进行加密。对于字母字符,按照特定规则进行加密:小写字母 'a' 到 'z' 循环后移 3 位,大写字母 'A' 到 'Z' 也循环后移 3 位,其他字符保持不变。

      using System;class StringEncryption
      {static void Main(){Console.Write("请输入要加密的字符串:");string input = Console.ReadLine();string encrypted = "";foreach (char c in input){if (char.IsLower(c)){encrypted += (char)(((c - 'a' + 3) % 26) + 'a');}else if (char.IsUpper(c)){encrypted += (char)(((c - 'A' + 3) % 26) + 'A');}else{encrypted += c;}}Console.WriteLine($"加密后的字符串为:{encrypted}");}
      }
      

      代码解释

      • 读取用户输入的字符串。
      • 遍历字符串中的每个字符,判断其是否为小写字母或大写字母。
      • 对于字母字符,通过计算循环后移 3 位的位置进行加密,其他字符直接添加到加密后的字符串中。
      • 最后输出加密后的字符串。

      5. 数字排序程序

      题目改编:编写一个控制台程序,要求用户输入一组用空格分隔的数字,然后使用 Array.Sort 方法和冒泡排序算法分别对这些数字进行从小到大排序,并输出排序结果。

      using System;class NumberSorting
      {static void Main(){Console.Write("请输入一组用空格分隔的数字:");string input = Console.ReadLine();string[] numbersStr = input.Split(' ');int[] numbers = new int[numbersStr.Length];for (int i = 0; i < numbersStr.Length; i++){numbers[i] = int.Parse(numbersStr[i]);}// 使用 Array.Sort 方法排序int[] sortedByArraySort = (int[])numbers.Clone();Array.Sort(sortedByArraySort);Console.WriteLine("使用 Array.Sort 方法排序后的结果:");foreach (int num in sortedByArraySort){Console.Write(num + " ");}Console.WriteLine();// 使用冒泡排序int[] sortedByBubbleSort = (int[])numbers.Clone();for (int i = 0; i < sortedByBubbleSort.Length - 1; i++){for (int j = 0; j < sortedByBubbleSort.Length - i - 1; j++){if (sortedByBubbleSort[j] > sortedByBubbleSort[j + 1]){int temp = sortedByBubbleSort[j];sortedByBubbleSort[j] = sortedByBubbleSort[j + 1];sortedByBubbleSort[j + 1] = temp;}}}Console.WriteLine("使用冒泡排序后的结果:");foreach (int num in sortedByBubbleSort){Console.Write(num + " ");}Console.WriteLine();}
      }
      

      代码解释

      • 读取用户输入的字符串,并使用 Split 方法将其按空格分割成字符串数组。
      • 将字符串数组转换为整数数组。
      • 克隆整数数组,分别使用 Array.Sort 方法和冒泡排序算法对克隆数组进行排序。
      • 输出两种排序方法的结果。

      6. 蟠桃数量计算问题

      题目改编:悟空吃蟠桃,第一天吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天都吃掉前一天剩下的一半多一个,到第 n 天准备吃的时候只剩下一个桃子。请根据用户输入的 n 值,计算悟空第一天开始吃的时候桃子一共有多少个。

      using System;class PeachCalculation
      {static void Main(){Console.Write("请输入天数 n:");int n = int.Parse(Console.ReadLine());int peaches = 1;for (int i = n - 1; i > 0; i--){peaches = (peaches + 1) * 2;}Console.WriteLine($"第一天开始吃的时候桃子一共有 {peaches} 个。");}
      }
      

      代码解释

      • 读取用户输入的天数 n
      • 从第 n 天剩下的 1 个桃子开始,逆向推导每天开始时的桃子数量。
      • 使用 for 循环,根据每天吃桃子的规则计算前一天的桃子数量。
      • 最后输出第一天开始时的桃子数量。

      7. 最小数交换问题

      题目改编:用户输入 nn < 100)个整数,找出其中最小的数,将它与数组的第一个数交换位置,然后输出交换后的数组。

      using System;class MinNumberSwap
      {static void Main(){Console.Write("请输入数字的个数(n < 100):");int n = int.Parse(Console.ReadLine());int[] numbers = new int[n];Console.Write("请输入这 {0} 个数字:", n);string[] input = Console.ReadLine().Split(' ');for (int i = 0; i < n; i++){numbers[i] = int.Parse(input[i]);}int minIndex = 0;for (int i = 1; i < n; i++){if (numbers[i] < numbers[minIndex]){minIndex = i;}}int temp = numbers[0];numbers[0] = numbers[minIndex];numbers[minIndex] = temp;Console.WriteLine("交换后的数组为:");foreach (int num in numbers){Console.Write(num + " ");}Console.WriteLine();}
      }
      

      代码解释

      • 读取用户输入的数字个数 n,并创建一个长度为 n 的整数数组。
      • 读取用户输入的 n 个数字,并存储到数组中。
      • 遍历数组,找出最小数的索引 minIndex
      • 交换最小数和数组第一个数的位置。
      • 输出交换后的数组。

      8. 有序数组插入问题

      题目改编:有 nn <= 100)个整数已经按照从小到大的顺序排列好,现在用户输入一个整数 x,请将该数插入到序列中,并使新的序列仍然有序,最后输出新的序列。

      using System;class OrderedArrayInsertion
      {static void Main(){Console.Write("请输入有序数组的长度(n <= 100):");int n = int.Parse(Console.ReadLine());int[] array = new int[n + 1];Console.Write("请输入有序数组的元素(从小到大):");string[] input = Console.ReadLine().Split(' ');for (int i = 0; i < n; i++){array[i] = int.Parse(input[i]);}Console.Write("请输入要插入的整数 x:");int x = int.Parse(Console.ReadLine());int insertIndex = n;for (int i = 0; i < n; i++){if (x < array[i]){insertIndex = i;break;}}for (int i = n; i > insertIndex; i--){array[i] = array[i - 1];}array[insertIndex] = x;Console.WriteLine("插入后的新序列为:");foreach (int num in array){Console.Write(num + " ");}Console.WriteLine();}
      }
      

      代码解释

      • 读取用户输入的有序数组长度 n,并创建一个长度为 n + 1 的整数数组。
      • 读取用户输入的有序数组元素,并存储到数组的前 n 个位置。
      • 读取用户输入的要插入的整数 x
      • 遍历数组,找到 x 应该插入的位置 insertIndex
      • 将插入位置之后的元素依次后移一位。
      • 将 x 插入到 insertIndex 位置。
      • 输出插入后的新序列。

      9. 工资发零问题

      题目改编:泰课的老师每月 8 号发工资,财务处的小云老师需要考虑最少准备多少张人民币,才能在给每位老师发工资时都不用老师找零。假设老师的工资都是正整数,单位为元,人民币有 100 元、50 元、10 元、5 元、2 元和 1 元六种。

      using System;class SalaryPayment
      {static void Main(){Console.Write("请输入老师的工资:");int salary = int.Parse(Console.ReadLine());int hundredCount = salary / 100;salary %= 100;int fiftyCount = salary / 50;salary %= 50;int tenCount = salary / 10;salary %= 10;int fiveCount = salary / 5;salary %= 5;int twoCount = salary / 2;salary %= 2;int oneCount = salary;int totalNotes = hundredCount + fiftyCount + tenCount + fiveCount + twoCount + oneCount;Console.WriteLine($"最少需要准备 {totalNotes} 张人民币。");Console.WriteLine($"100 元:{hundredCount} 张,50 元:{fiftyCount} 张,10 元:{tenCount} 张,5 元:{fiveCount} 张,2 元:{twoCount} 张,1 元:{oneCount} 张。");}
      }
      

      代码解释

      • 读取用户输入的老师工资。
      • 依次计算需要的 100 元、50 元、10 元、5 元、2 元和 1 元人民币的张数。
      • 计算总共需要的人民币张数。
      • 输出最少需要准备的人民币张数以及每种面值的张数。

      10. 合法标识符判断问题

      题目改编:编写一个程序,判断用户输入的字符串是否为 C# 的合法标识符。合法标识符必须以字母、下划线或 @ 开头,后面可以跟字母、数字、下划线。

      using System;
      using System.Text.RegularExpressions;class IdentifierValidation
      {static void Main(){Console.Write("请输入一个字符串:");string input = Console.ReadLine();bool isValid = Regex.IsMatch(input, @"^[@_a-zA-Z][a-zA-Z0-9_]*$");if (isValid){Console.WriteLine("该字符串是 C# 的合法标识符。");}else{Console.WriteLine("该字符串不是 C# 的合法标识符。");}}
      }
      

      代码解释

      • 读取用户输入的字符串。
      • 使用正则表达式 ^[@_a-zA-Z][a-zA-Z0-9_]*$ 判断字符串是否符合 C# 合法标识符的规则。
      • 根据判断结果输出相应信息。

      11. 回文串判断问题

      题目改编:编写一个程序,判断用户输入的字符串是否为回文串。回文串是指正读和反读都一样的字符串。

      using System;class PalindromeCheck
      {static void Main(){Console.Write("请输入一个字符串:");string input = Console.ReadLine();string reversed = ReverseString(input);if (input == reversed){Console.WriteLine("该字符串是回文串。");}else{Console.WriteLine("该字符串不是回文串。");}}static string ReverseString(string s){char[] charArray = s.ToCharArray();Array.Reverse(charArray);return new string(charArray);}
      }
      

      代码解释

      • 读取用户输入的字符串。
      • 定义 ReverseString 方法,用于反转字符串

      五.结语

              通过对 C# 变量的深入学习,无论是基础的类型转换,还是复杂的变量类型,以及特殊的字符串处理,我们都掌握了更多编程的 “利器”。希望大家在实际编程中不断实践,灵活运用这些知识,编写出更优秀的代码。

      相关文章:

      C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南

      一、变量类型转换&#xff1a;隐式与显式的门道 &#xff08;一&#xff09;隐式转换&#xff1a;编译器的 “贴心小助手” 隐式转换是编译器自动进行的类型转换&#xff0c;无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时&#…...

      初步学习java 动态代理

      前言 在学习 动态代理知识之前&#xff0c;可以先了解 反射 反射的复习-CSDN博客 场景 我们知道&#xff0c;一些大明星开演出会&#xff0c;要收门票&#xff0c;准备场景啥的。但很显然 明星&#xff0c;他们主要还是 唱歌&#xff0c;跳舞&#xff0c;和粉丝互动。那么 其…...

      QT 基础知识点

      1.基础窗口类QMainWindow qDialog Qwidget 随项目一起创建的窗口基类有三个可选QMainWindow qDialog Qwidget 1.1 Qwidget 是所有窗口的基类&#xff0c;只要是他的子类&#xff0c;或子类的子类&#xff0c;都具有他的属性。 右键项目 Add New -> Qt qt设计师界面类&am…...

      unity学习53:UI的子容器:面板panel

      目录 1 UI的最底层容器&#xff1a;canvas 1.1 UI的最底层容器&#xff1a;canvas 1.2 UI的合理结构 2 UI的子容器&#xff1a;面板panel 2.1 创建panel 2.2 面板的本质&#xff1a; image &#xff0c;就是一个透明的图片&#xff0c;1个空容器 3 面板的属性 4 面板的…...

      Qt如何将数据传入labview,Qt又如何从labview中读取数据?

      Qt如何将数据传入labview,Qt又如何从labview中读取数据? Qt如何将数据传入labviewQt如何从labview中读取数据 Qt如何将数据传入labview Qt如何从labview中读取数据...

      JWT使用教程

      目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…...

      数据结构——静态顺序表,动态顺序表

      线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构&#xff0c;常⻅的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的⼀条直线。但是在…...

      前端Sass面试题及参考答案

      目录 什么是 Sass? Sass 和 CSS 的主要区别是什么? Sass 中如何处理列表? Sass 中如何处理映射(map)? Sass 中如何使用函数? Sass 中如何使用内置函数? Sass 中如何设置默认值? Sass 中的 @function 和 @mixin 有什么区别? Sass 中如何实现模块化? Sass 中…...

      ubuntu20.04音频aplay调试

      1、使用指定声卡&#xff0c;aplay 播放命令 aplay -D plughw:1,0 test2.wav2、 录音 arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav3、各个参数含义 -D 指定声卡编号 plughw:0,0 //0,0代表card0,device0&#xff0c;可以通过arecord -l获取 -f 录音格式 S16_LE…...

      比特信噪比与信噪比SNR的换算公式

      在无线通信系统中&#xff0c;比特信噪比与信噪比&#xff08;SNR&#xff0c;通常指符号信噪比Es/N0&#xff09;的换算&#xff1a; 核心公式 E b N 0 SNR R ⋅ log ⁡ 2 M \boxed{ \frac{E_b}{N_0} \frac{\text{SNR}}{R \cdot \log_2 M} } N0​Eb​​R⋅log2​MSNR​​ 或…...

      RTSP场景下RTP协议详解及音视频打包全流程

      RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系 RTSP&#xff1a;负责媒体会话控制&#xff08;DESCRIBE、SETUP、PLAY、PAUSE&#xff09;&#xff0c;通过SDP协商传输参数&#xff08;端口、编码格式、封装模式&#xff09;。RTP&#xff1a;实际传输音视频数…...

      java练习(39)

      ps:题目来自力扣 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以…...

      2.24DFS和BFS刷题

      洛谷P2895&#xff1a;用BFS走出危险区域&#xff0c;危险区域存在时间&#xff0c;我们用ma记录最快变成危险区域的时间&#xff0c; 然后每次枚举时间1然后跟ma数组比较看能不能走&#xff0c;然后时间复杂度为O(305^2)。 #include<iostream> #include<cstring>…...

      基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

      《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

      赛前启航 | 三场重磅直播集结,予力微软 AI 开发者挑战赛!

      随着微软 AI 开发者挑战赛的火热进行&#xff0c;赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现&#xff0c;第三、四、五期直播即将接连登场&#xff0c;为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是想进一…...

      MySQL数据库连接池泄露导致MySQL Server超时关闭连接

      前言 最近做项目&#xff0c;发现老项目出现xxx&#xff0c;这个错误其实很简单&#xff0c;出现在MySQL数据库Server端对长时间没有使用的client连接执行清楚处理&#xff0c;因为是druid数据库&#xff0c;且在github也出现这样的issue&#xff1a;The last packet successf…...

      Deepseek和Grok 3对比:写一段冒泡排序

      1、这是访问Grok 3得到的结果 2、grok3输出的完整代码&#xff1a; def bubble_sort(arr):n len(arr) # 获取数组长度# 外层循环控制排序轮数for i in range(n):# 内层循环比较相邻元素&#xff0c;j的范围逐渐减少for j in range(0, n - i - 1):# 如果当前元素大于下一个元…...

      EX_25/2/22

      找到第一天mystring练习&#xff0c;实现以下功能 mystring str "hello" mystring ptr "world" str str ptr; str ptr str[0] H #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #in…...

      el-select滚动获取下拉数据;el-select滚动加载

      el-select下拉获取数据 1.解决问题2.封装MyScrollSelect组件3.使用MyScrollSelect组件 1.解决问题 场景&#xff1a;下拉数据量过大&#xff0c;后端提供一个分页查询接口&#xff1b;需要每次滚动加载下一页的下拉数据 且单选的状态&#xff0c;需要支持回显&#xff0c;通过n…...

      Spring Boot面试题

      Spring Boot面试题 基础概念 Q1: Spring Boot的核心特性有哪些&#xff1f; public class SpringBootBasicDemo {// 1. 自动配置SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class…...

      STM32-智能小车项目

      项目框图 ST-link接线 实物图&#xff1a; 正面&#xff1a; 反面&#xff1a; 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 一、让小车动起来 新建文件夹智能小车项目 在里面复制19-串口打印功能 重命名为01-让小车动起来 新建文件夹motor&…...

      SAP-ABAP:ABAP第一代增强详解

      在SAP ABAP开发中&#xff0c;第一代增强&#xff08;First-Generation Enhancement&#xff09; 是早期用于扩展标准程序功能的传统技术&#xff0c;主要通过预定义的增强点&#xff08;Enhancement Points&#xff09;实现。以下是详细解析&#xff1a; 一、第一代增强的核心…...

      20分钟 Bash 上手指南

      文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号&#xff08;过滤条件&#xff09;重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…...

      地铁站内导航系统:基于蓝牙Beacon与AR技术的动态路径规划技术深度剖析

      本文旨在分享一套地铁站内导航系统技术方案&#xff0c;通过蓝牙Beacon技术与AI算法的结合&#xff0c;解决传统导航定位不准确、路径规划不合理等问题&#xff0c;提升乘客出行体验&#xff0c;同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文…...

      WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)

      免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

      滴水逆向_引用_友元函数_运算符重载

      作业&#xff1a; 运算符号重载实现。 struct Person { public:int x;int y; public:Person(){this->x 10;this->y 20;}Person(int x, int y){this->x x;this->y y;}//申明友元函数void Printf(const Person& p){printf("%d %d",p.x,p.y);}/…...

      git中,如何查看具体单个文件的log

      在 Git 中&#xff0c;可以使用多种方式查看单个文件的提交日志&#xff08;Log&#xff09;&#xff0c;以下详细介绍不同场景下的查看方法&#xff1a; 目录 一、基本命令查看文件的完整提交日志 二、查看文件提交日志并显示差异内容 三、限制显示的提交日志数量 四、按…...

      如何生成traceid以及可视化展示

      根据你的需求&#xff0c;以下是一些可以生成唯一 traceId 并用于分布式链路追踪的工具和项目&#xff0c;这些项目支持生成唯一的 traceId&#xff0c;并将其用于日志记录和分布式追踪&#xff1a; 1. OpenTelemetry OpenTelemetry 是一个开源的观测框架&#xff0c;支持生成…...

      2024 ICPC香港站 L.Flipping Paths的一种解法

      太变态了&#xff0c;场上被硬控了两个小时&#xff0c;最后20分钟思路熬出来了但是没写对~&#xff0c;糖完了。怎么说呢&#xff0c;香港站这样的轻量级赛站&#xff0c;这次强队也很少&#xff0c;导致很多题目的难度升级了&#xff0c;这道L题是一道银牌题&#xff0c;不少…...

      Uniapp 开发中遇到的坑与注意事项:全面指南

      文章目录 1. 引言Uniapp 简介开发中的常见问题本文的目标与结构 2. 环境配置与项目初始化环境配置问题解决方案 项目初始化注意事项解决方案 常见错误与解决方案 3. 页面与组件开发页面生命周期注意事项示例代码 组件通信与复用注意事项示例代码 样式与布局问题注意事项示例代码…...

      Python - 代码片段分享 - Excel 数据实时写入方法

      文章目录 前言注意事项工具 pandas1. 简介2. 安装方式3. 简单介绍几个api 实战片段 - 实时写入Excel文件结束语 要么出众&#xff0c;要么出局 前言 我们在爬虫采集过程中&#xff0c;总是将数据解析抓取后统一写入Excel表格文件&#xff0c;如果在解析数据出现问题容易出现数据…...

      一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系

      对于装系统的老手而说一直想研究一下装系统的原理&#xff0c;以及面对一些问题时的解决思路&#xff0c;故对以前的方法进行原理上的解释&#xff0c;主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导&#xff0c;我们可以看一下微pe制作的启动盘&#…...

      Java函数式接口的巧妙应用

      引言 函数式接口&#xff08;Functional Interface&#xff09;是Java 8引入的一个重要概念&#xff0c;它是Lambda表达式和方法引用的基础。通过函数式接口&#xff0c;Java实现了对函数式编程的支持&#xff0c;让代码更加简洁、灵活。本文将带你深入理解函数式接口&#xf…...

      爱普生SG-8101CE可编程晶振赋能智能手机的精准心脏

      在智能手机高速迭代的今天&#xff0c;高性能、低功耗与小型化已成为核心诉求。智能手机作为人们生活中不可或缺的工具&#xff0c;需要在各种复杂场景下稳定运行。爱普生SG-8101CE可编程晶振凭借其卓越性能&#xff0c;成为智能手机中不可或缺的精密时钟源&#xff0c;为通信、…...

      条件渲染

      当if条件为true则会被显示出来&#xff0c;若为false则不会显示出来。 在App.vue中需要引用一下。 if else一样的if为真则显示if的内容&#xff0c;若不是则显示else下的内容。 多条件判断。 if在为false时&#xff0c;根本不会渲染&#xff0c;而show则会&#xff0c;只不过d…...

      sklearn中的决策树-分类树:剪枝参数

      剪枝参数 在不加限制的情况下&#xff0c;一棵决策树会生长到衡量不纯度的指标最优&#xff0c;或者没有更多的特征可用为止。这样的决策树 往往会过拟合。为了让决策树有更好的泛化性&#xff0c;我们要对决策树进行剪枝。剪枝策略对决策树的影响巨大&#xff0c;正确的剪枝策…...

      算法随笔_59: 子数组最小乘积的最大值

      上一篇:算法随笔_58: 队列中可以看到的人数-CSDN博客 题目描述如下: 一个数组的 最小乘积 定义为这个数组中 最小值 乘以 数组的 和 。 比方说&#xff0c;数组 [3,2,5] &#xff08;最小值是 2&#xff09;的最小乘积为 2 * (325) 2 * 10 20 。 给你一个正整数数组 nums …...

      线性模型 - 支持向量机延伸

      为了更好的理解支持向量机模型&#xff0c;本文我们延伸学习和理解一下和支持向量机相关的一些概念&#xff0c;这些概念都是偏理论和数学的知识&#xff0c;比较抽象和复杂&#xff0c;而且需要一定的高等数学知识。大家可以先明白其所包含的意义&#xff0c;然后逐步深入理解…...

      力扣3464. 正方形上的点之间的最大距离

      力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点&#xff0c;k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线&#xff0c;此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …...

      AI数字人源码搭建部署指南

      为实现AI数字人的智能交互功能&#xff0c;需开发包含语音识别、自然语言处理、机器学习等技术的AI算法和模型。利用TensorFlow、PyTorch等深度学习框架完成模型训练。具体步骤包括以下四个方面&#xff1a; 需求分析&#xff1a;通过市场调研、用户访谈、专家咨询等方式&…...

      智能拖把控制板开发

      智能拖把控制板开发全流程解析 一、硬件架构与H桥驱动设计 工程师小明选用四颗AO3400A低导通电阻MOS管构建H桥驱动拓扑&#xff0c;实测全桥导通电阻仅15mΩ&#xff0c;较传统方案降低40%损耗。通过优化PCB布局将驱动环路电感控制在15nH以内&#xff0c;配合10kHz互补PWM信号…...

      【Swift 算法实战】利用 KMP 算法高效求解最短回文串

      网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

      【数字化转型+AI:现代企业腾飞的一对翅膀】

      ——解析数字时代的核心竞争力 在全球化竞争与技术迭代加速的今天&#xff0c;传统企业若想突破增长瓶颈&#xff0c;必须抓住两大核心驱动力&#xff1a;‌数字化转型‌与‌人工智能&#xff08;AI&#xff09;‌。这两大技术如同企业腾飞的双翼&#xff0c;共同构建敏捷性、创…...

      Zabbix——踩坑HttpRequest,header添加无效

      背景 在试图尝试通过Zabbix接入DeepSeek API的时候&#xff0c;由于使用了HTTP的方式&#xff0c;所以需要使用Zabbix 自带的HttpRequest库进行请求&#xff0c;产生了下面的问题 问题 curl curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completio…...

      MTK Android12 预装apk可卸载

      文章目录 需求解决方法1、device/mediatek/mt6761/device.mk2、/vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt3、路径&#xff1a;4、Android.mk 需求 近期&#xff0c;客户需要预装一个apk&#xff0c;同时该apk要可卸载。解…...

      让网页“浪“起来:打造会呼吸的波浪背景

      每次打开那些让人眼前一亮的网页时&#xff0c;你是否有注意到那些看似随波逐流的动态背景&#xff1f;今天咱们不聊高深的技术&#xff0c;就用最朴素的CSS&#xff0c;来解锁这个让页面瞬间鲜活的秘籍。无需JavaScript&#xff0c;不用复杂框架&#xff0c;准备好一杯咖啡&am…...

      YOLO11的单独推理程序

      YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理…...

      代码随想录day21

      669.修剪二叉搜索树 //理解修建后重建树的概念 TreeNode* trimBST(TreeNode* root, int low, int high) {if(root nullptr) return nullptr;if(root->val < low){TreeNode* node trimBST(root->right, low, high);return node;}if(root->val > high){TreeNod…...

      利用Ai对生成的测试用例进行用例评审

      利用AI对生成的测试用例进行用例评审,可以从用例的完整性、有效性、一致性等多个维度展开,借助自然语言处理、机器学习等技术,提高评审效率和准确性。以下为你详细介绍具体方法: 1. 需求匹配度评审 利用自然语言处理(NLP)技术 步骤:首先将软件需求文档和生成的测试用例…...

      JAVAweb-JS基本数据类型,变量,DOM,pop,push函数,事件

      JavaScript,可以嵌套在静态页面中添加一些动态语言. JavaScript是开发web脚本语言,但也被用到了很多非浏览器环境中,比如node平台 JS可以嵌套在静态页面中可以给静态页面添加一些动态效果(脚本语言),不同浏览器厂商(在浏览器中都有内置解析器解析JS语法) <!DOCTYPE html&g…...