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