C#题目问答

目录

1.整数转换,整数和字符串,字符串和整数之间的转换怎么实现?

2.日期转换,获取当前日期,字符串转日期,日期转字符串怎么实现?

3.举例一维、二维、三维数组。

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);
    }
}

运行结果:



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());

    运行结果:

  • 44
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值