上海某大型公司面试题20200305

1、编写程序解决以下问题:长度为N的数组,随机放入值为1-50中间的任意整数,请编写程序找出其中的偶数数字,并按照该数字在数组中出现次数从多到少排序输出。

    int[] arr = new int[N];
            Random rn = new Random();
            for (int i = 0; i <= N - 1; i++)
            {
                arr[i] = rn.Next(1, 51);

            }
            List<int> list = arr.ToList();

            for (int iii = 0; iii <= N - 1; iii++)
            {
                if (arr[iii] % 2 != 0)
                {
                    list.Remove(arr[iii]);
                }

            }
            var newarr = list.ToArray();

          
            for (int r = 0; r < newarr.Length; r++)
            {
                Console.WriteLine(newarr[r]);
            }
     
            var lstCount = (from n in list group n by n into newlst orderby newlst.Count() descending select newlst).ToList();
            for (int r = 0; r < lstCount.Count; r++)
            {
                Console.WriteLine(lstCount[r].Key);
            }

注:1、array与List互相转换    2、linq的用法:(1)统计数组元素出现次数  (2)方便的根据条件对数组元素排序

2、编写程序列出一个目录下所有的文件,包括所有子目录下的文件,并打印出文件总数。

   public void GetFileTotalNum(DirectoryInfo path, ArrayList filesList)
        {
            FileInfo[] files = path.GetFiles();
            foreach (FileInfo fi in files)
            {
                filesList.Add(fi.Name);
            }
            DirectoryInfo[] directoryInfos = path.GetDirectories();
            foreach (DirectoryInfo d in directoryInfos)
            {

                FileInfo[] allFile = d.GetFiles();
                foreach (FileInfo fi in allFile)
                {
                    filesList.Add(fi.Name);
                }

            }

            foreach (DirectoryInfo d in directoryInfos)
            {
                DirectoryInfo[] dd = d.GetDirectories();
                foreach (DirectoryInfo ddd in dd)
                {
                    GetFileTotalNum(ddd, filesList);
                }
            }
        }

3、请编写一个函数,能将字符串main-action-holder,转换为mainActionHolder

     public string GetConvertString(string str)
        {
            string[] strArr = str.Split(new char[] { '-' });
           return strArr[0]+ strArr[1].Substring(strArr[1].IndexOf("-") + 1,1).ToUpper()+strArr[1].Substring(strArr[1].IndexOf("-") + 2, strArr[1].Length-1)+ strArr[2].Substring(strArr[2].IndexOf("-") + 1,1).ToUpper()+ strArr[2].Substring(strArr[2].IndexOf("-") + 2, strArr[2].Length - 1);
        }

附加题

4、写一个验证掷骰子概率的程序,同时投掷2颗6面骰子n次,计算其和得到各数字的概率。

5、找出这样的数字:一个数字等于它的各分解项相加。示例数字 28可分解为1、2、4、7、14,1+2+4+7+14=28。同样,数字6分解为:1、2、3,1+2+3=6。用代码找出1-500以内的所有符合这样条件的数字。

6、有一张班级学生表有3个字段分别为学生姓名:STUDENT、性别:GENDER、身高:STATURE。请编写程序为该班学生排座位,规则如下:

1)教室共4排座位,每个座位都可以坐2人(有同桌)

2)身高矮的同学坐在前排,身高高的坐后面

3)同桌必须为同性别同学,若同性别人员为奇数,只允许最后一排位置一个人坐

7、简单实现在线购买电影票,请重点考虑多人同时购买一个座位的情况,可以使用伪代码

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值