目录
1.整数转换,整数和字符串,字符串和整数之间的转换怎么实现?
2.日期转换,获取当前日期,字符串转日期,日期转字符串怎么实现?
4.需求:有个88笔费用记录,总额3亿,金额在300万~800万之间,随机数如何实现?并记录总耗时。
5.简述常见的集合类型的存储结构和它们的作用以及优缺点,并写出实现案例。
1.整数转换,整数和字符串,字符串和整数之间的转换怎么实现?
答:1)整数转换为字符串使用ToString()方法,Convert.ToString()它是一个静态方法,可以接受不同的数据类型作为参数,比对象直接调用的ToString()方法更为通用。
2)字符串转换为整数使用int.Parse()或者int.TryParse()
(比前者更安全)
方法,也可用Convert.ToInt32()静态方法将各种类型数据转化为int类型,在处理字符串、bool
值或其他数值类型转换为整数时非常有用。int num = 123; string strNum = num.ToString(); Console.WriteLine(strNum); string strNumber = Convert.ToString(num); Console.WriteLine(strNumber); string str = "123"; int a=int.Parse(str); Console.WriteLine(a); int b = Convert.ToInt32(str); Console.WriteLine(b);
运行结果为:
2.日期转换,获取当前日期,字符串转日期,日期转字符串怎么实现?
答:1)使用DateTime.Parse()、DateTime.ParseExact()或更安全的DateTime.TryParse()、DateTime.TryParseExact()方法可以将符合格式的字符串转换为DateTime对象。
2)要获取当前的日期和时间,你可以使用DateTime.Now或DateTime.UtcNow属性
3)要将DateTime对象转换为字符串,可以使用ToString()方法,并提供一个格式字符串来定义输出的样式。
tring c = "2024-07-04 09:12:45"; DateTime d = DateTime.Parse(c); Console.WriteLine(d.ToString()); DateTime dateTime = DateTime.Now; Console.WriteLine(dateTime.ToString()); DateTime dt = new DateTime(2024, 7, 4, 9, 5, 09); Console.WriteLine(dt.ToString());
运行结果:
3.举例一维、二维、三维数组。1)一维数组
int []e=new int[3]; for(int i=0; i<e.Length; i++) {e[i] = i;} for(int i=0; i<e.Length; i++) {Console.Write(e[i]+" ");} Console.WriteLine(); int[] g = {1,2,3,4,5,8,9}; foreach(int i in g) { Console.Write(i+" "); } Console.WriteLine(); int[]h=new int[2]; Random random = new Random(); for (int i = 0; i< h.Length; i++) { h[i] = random.Next(100, 105); } foreach(int i in h) {Console.Write(i+" "); }
运行结果:
2)二维数组
int[,] x = new int[2, 3]//初始化一个2*3的二维数组 {{1,2,4},{2,4,5},}; x[0, 0] = 100;//将第0行第0个数重新赋值为100 for(int i=0;i<x.GetLength(0);i++) { for(int j=0;j<x.GetLength(1);j++) { Console.Write(x[i,j] + " "); } Console.WriteLine(); }//输出打印二维数组
运行结果:
3)三维数组
int[,,] a3 = new int[2, 2, 2] {{{ 1,2 },{ 3,4 }},{{ 5,6},{ 7,8 }}}; a3[0, 0, 0] = 100; a3[1, 1, 1] = 999; for (int i = 0; i < a3.GetLength(0); i++) { for (int j = 0; j < a3.GetLength(1); j++) { for (int k = 0; k < a3.GetLength(2); k++) { Console.Write(a3[i, j, k] + " "); } Console.WriteLine(); } Console.WriteLine(); }
运行结果:
4.需求:有个88笔费用记录,总额3亿,金额在300万~800万之间,随机数如何实现?并记录总耗时。答
using System; using System.ComponentModel.DataAnnotations; using System.Diagnostics; class Program { static void Main(string[] args) { int num = 88; int total = 300000000; int sum = 0; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); int[] amounts = new int[num]; Random random = new Random();//随机数 for (int i = 0; i < amounts.Length; i++) { amounts[i] = random.Next(3000000, 8000000); Console.WriteLine(amounts[i]); } amounts[num - 1] = total - sum; stopwatch.Stop(); TimeSpan elapsedTime = stopwatch.Elapsed; Console.WriteLine("总耗时:{0}ms", elapsedTime.TotalMilliseconds); } }
运行结果:
标签:题目,C#,DateTime,int,numbers,WriteLine,new,Console,问答 From: https://blog.csdn.net/m0_67688142/article/details/140176223
5.简述常见的集合类型的存储结构和它们的作用以及优缺点,并写出实现案例。1. List<T>(动态数组)
- 存储结构:基于数组实现,但容量可自动扩展。
- 作用:存储和操作有序数据,支持索引访问。
- 优点:访问速度快(索引访问O(1)),插入和删除效率取决于位置(尾部O(1),中间O(n))。
- 缺点:大量插入删除操作在列表中间会较慢。
using System.Collections.Generic; List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(9); numbers.Add(25); numbers.Add(27); numbers.RemoveAt(0); // 删除第一个元素 Console.WriteLine(numbers[2]);//打印第2个数
运行结果:
2.Dictionary<TKey, TValue>(哈希表)
- 存储结构:哈希表,使用键值对进行存储。
- 作用:快速查找、添加、删除键值对。
- 优点:平均情况下查找、插入和删除操作接近O(1)。
- 缺点:哈希冲突可能导致性能下降;键必须唯一。
Dictionary<string, int> ages = new Dictionary<string, int>(); ages.Add("A", 30); ages["B"] = 25; ages.Remove("A"); Console.WriteLine(ages["B"]); // 输出B的年龄
运行结果:
3. HashSet<T>(集合)
- 存储结构:基于哈希表,用于存储不重复元素。
- 作用:高效地执行集合运算,如并集、交集等。
- 优点:快速的添加、删除和查找,元素唯一。
- 缺点:无序,不支持索引访问。
HashSet<int> uniqueNumbers = new HashSet<int>(); uniqueNumbers.Add(1); uniqueNumbers.Add(2); uniqueNumbers.Add(1); // 不会添加重复的元素 Console.WriteLine(uniqueNumbers.Contains(2)); // 检查是否包含某个元素
运行结果:
4. LinkedList<T>(链表)
- 存储结构:每个元素包含值和指向下一个元素的指针。
- 作用:高效的插入和删除操作,尤其是表头和表尾。
- 优点:插入和删除操作快(O(1)),不需要连续内存。
- 缺点:索引访问慢(O(n)),占用额外的内存(指针)。
LinkedList<int> numbers = new LinkedList<int>(); numbers.AddLast(1); numbers.AddFirst(0); // 在头部添加 numbers.AddFirst(6); // 在头部添加 numbers.AddFirst(5); // 在头部添加 numbers.AddFirst(80); // 在头部添加 numbers.RemoveLast(); // 删除最后一个 numbers.RemoveFirst(); foreach (int i in numbers) { Console.WriteLine(i); }
运行结果:
5. Stack<T>(栈)
- 存储结构:LIFO(后进先出)原则的线性数据结构。
- 作用:临时存储数据,如函数调用堆栈。
- 优点:操作简单,仅允许一端进行添加和移除。
- 缺点:不适合需要频繁访问中间元素的场景。
Stack<int> stack = new Stack<int>(); stack.Push(1); stack.Push(2); stack.Push(52); stack.Push(26); Console.WriteLine(stack.Pop());
运行结果:
6. Queue<T>(队列)
- 存储结构:FIFO(先进先出)原则的线性数据结构。
- 作用:处理需要按顺序访问的数据,如任务调度。
- 优点:操作简单,两端明确,适合顺序处理。
- 缺点:与栈相似,不适合随机访问。
Queue<int> queue = new Queue<int>(); queue.Enqueue(15); queue.Enqueue(6); queue.Enqueue(56); queue.Enqueue(27); Console.WriteLine(queue.Dequeue());
运行结果: