• C#笔试(程序设计)


    1.如何把一个Array复制到ArrayList里,如何把ArrayList复制到Array里?

    foreach( object o in array )arrayList.Add(o);
    
    ArrayList.ToArray
    View Code

    2.几种排序算法C#实现

     冒泡排序

            public void Action(int[] array)
            {
                for (int a = 0; a < array.Length; a++)
                {
                    int item = 0;
                    for (int b = array.Length - 1; b > a; b--)
                    {
                        if (array[b] < array[b - 1])
                        {
                            item = array[b];
                            array[b] = array[b - 1];
                            array[b - 1] = item;
                        }
                    }
                }
            }
    View Code

    直接插入排序

            public void Action(int[] array)
            {
                for (int i = 1; i < array.Length; i++)
                {
                    if (array[i] < array[i - 1])
                    {
                        int tem = array[i];
                        int j = 0;
                        for (j = i - 1; j >= 0 && tem < array[j]; j--)
                        {
                            array[j + 1] = array[j];
                        }
                        array[j + 1] = tem;
                    }
                }
            }
    View Code

    快速排序

            private void QuickSortArray(int[] arr, int low, int high)
            {
                int i = low;
                int j = high;
                int tmp = arr[low];
                while (low < high)
                {
                    while ((low < high) && arr[high] >= tmp)
                    {
                        --high;
                    }
                    arr[low] = arr[high];
                    while ((low < high) && arr[low] <= tmp)
                    {
                        ++low;
                    }
                    arr[high] = arr[low];
                    --high;
                }
                arr[low] = tmp;
                if (i < low - 1)
                {
                    QuickSortArray(arr, i, low - 1);
                }
                if (j > low + 1)
                {
                    QuickSortArray(arr, low + 1, j);
                }
    
            }
    View Code

    简单选择排序

            public void Action(int[] array)
            {
                int tmp = 0;
                int t = 0;//最小数标记
                for (int i = 0; i < array.Length; i++)
                {
                    t = i;
                    for (int j = i + 1; j < array.Length; j++)
                    {
                        if (array[t] > array[j])
                        {
                            t = j;
                        }
                    }
                    tmp = array[i];
                    array[i] = array[t];
                    array[t] = tmp;
                }
            }
    View Code

     3.一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少, 用递归算法实现。

    public class MainClass
    {
    public static void Main()
    {
    Console.WriteLine(Foo(30));
    }
    public static int Foo(int i)
    {
    if (i <= 0)
    return 0;
    else if(i > 0 && i <= 2)
    return 1;
    else return Foo(i -1) + Foo(i – 2);
    }
    }
    View Code

    4.输出?X=1;Y=2

    class A
    {
        public static int x;
        static A()
        {
            x = B.Y + 1;
        }
    }

    class B
    {
        public static int Y = A.x + 1;
        static B()
        {

        }
        static void Main()
        {
            Console.WriteLine("X={0},Y={1}",A.x,B.Y);
            Console.Read();
        }
    }

    首先是字段Y,Y是int型,编译器初始化为0 ,然后Y为static,所以编译器接着执行B的静态构造函数,注意一点,构造函数只执行一次
    在static B()里面,Y被赋值为A.X+1,编译器接着去找A.X的值,此时执行A的静态构造函数,x=B.Y+1,因为B的构造函数已经执行了,此时就不执行第二次,Y此时具有
    值是0,所以X=1;然后返回Y=A.X+1,Y=2
    所以答案就是X=1;Y=2;

    5.有一个10个数的数组,计算其中不重复数字的个数。{3,5,9,8,10,5,3}

                int[] values = { 3, 5, 9, 8, 10, 5, 3 };
                HashSet<int> set = new HashSet<int>();
                foreach (int i in values)
                {
                    set.Add(i);
                }
                foreach (int i in set)
                {
                    Console.WriteLine(i);
                }
    View Code

    6.

    程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

    要求: 1.要有联动性,老鼠和主人的行为是被动的。

    2.考虑可扩展性,猫的叫声可能引起其他联动效应。

    要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
    评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行
    <2>从Mouse和Master中提取抽象
    <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。

    7.代码中有什么错误吗?请指出来

    using System;
    class A
    {
    public virtual void F(){
    Console.WriteLine("A.F");
    }
    }
    abstract class B:A
    {
    public abstract override void F();
    }
    抽象类是无法重载的
    所以 
     public abstract override void F();  错误 
    调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。
    
    默认情况下,方法是非虚拟的。不能重写非虚方法。
    
    virtual 修饰符不能与 staticabstract, privateoverride 修饰符一起使用。
    
    除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。
    
        *
    
          在静态属性上使用 virtual 修饰符是错误的。
        *
    
          通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。
    View Code

    8.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

    int[] arr = new int[100];
    for (int i = 0; i < arr.Length; i++) arr[i] = i;
    Random rnd = new Random();
    Array.Sort(arr, delegate(int a, int b) { return rnd.Next(); });
    View Code
  • 相关阅读:
    全国疫情可视化地图(第三阶段)
    全国疫情可视化地图(第二阶段)
    JAVAWEB调用数据库显示图形化显示
    全国疫情可视化地图(第一阶段)
    第二周学习总结
    个人介绍及目前现状
    循环列表下练习循环子数组
    构建之法读书笔记(三)
    构建之法读书笔记(二)
    变叶木
  • 原文地址:https://www.cnblogs.com/jlf19881031/p/3535568.html
Copyright © 2020-2023  润新知