C#算法面试题

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

        static void GetArray()
        {
            int[] intArr = new int[100];
            int[] intArr2 = new int[100];
            for (int i = 0; i < 100; i++)
            {
                intArr[i] = i+1;
            }
            Print(intArr);
            Random r=new Random();
            for (int i = 0; i < 100; i++)
            {
                int j = r.Next(100 - i);
                intArr2[i] = intArr[j];
                intArr[j] = intArr[100 - i - 1];
            }
            Print(intArr2);
            //Array.Sort(intArr2);
            //Print(intArr2);
        }
          static void Print(int[] array)
        {
            foreach (int i in array)
            {
                Console.Write(i + " ");
            }

            Console.WriteLine();
        }

上面这种最优了,如果用

int num=rnd.Next(1,101); 
if(!myList.Contains(num)) 
myList.Add(num); 
10分应该能得到1分.


2.一个int数组,将负数放在左边,正数移动在右边.0不动
        static void Sort(int[] array)
        {
            int count = array.Length;
            for (int i = 0, j = count - 1; i <= j; )
            {
                while (array[i] <= 0) i++;
                while (array[j] >= 0) j--;
                if (array[i] > 0 && array[j] < 0 && i <= j)
                {
                    array[i] = array[i] + array[j];
                    array[j] = array[i] - array[j];
                    array[i] = array[i] - array[j];
                }
            }
        }

不需要排序

3.写一个函数计算当参数为N的值:1-2+3-4+5-6+7……+N 
        static int Sum(int[] array)
        {
            if (array.Length % 2 == 0)
            {
                return  array.Length / 2*-1;
            }
           else
            {
                return array[array.Length - 1] - array.Length / 2;
            }
        }

不需要计算,请先观察即可



转载于:https://www.cnblogs.com/birds-zhu/p/7542222.html

1. 一列数的规则如下: 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); } } 2.C#中的委托是什么?事件是不是一种委托? 答 :委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托。 3.override与重载的区别 答 :overrider与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。 Overrider是进行基类中函数的重写。为了适应需要。 4.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 5.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } } 6.请编程实现一个冒泡排序算法? 答: int [] array = new int[] {1,3,5,8,0,2,3,10,8,10}; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array[i]) { temp = array[i] ; array[i] = array[j] ; array[j] = temp ; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值