- 冒泡排序法
两两交换,从左到右,把最大值排到后面
/// <summary>
/// 冒泡排序法
/// </summary>
public static void Func()
{
int[] arr = { 12, 3423, 454, 2, 123, 234, 12, 2 };
int temp = 0;
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = 0; j < arr.Length - 1-i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
foreach (var item in arr)
{
Console.WriteLine(item);
}
}
- 计算10的阶乘,使用递归
a.递归的定义:任何一个方法既可以调用其他方法又可以调用自己,**而当这个方法调用自己时,我们就叫它递归函数或者递归方法。
b.递归的三个步骤:
明确函数要坐什么?
函数要实现什么功能?
明确递归的结束条件(退出递归的条件) 找到函数的等价关系式,
c.以下列出1至10的阶乘:
1!=1,2!=2,3!=6,4!=24,5!=120,6!=720,7!=5040,8=40320,9!=362880,10!=3628800。
找出阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
/// <summary>
/// 计算10的阶乘,使用递归
/// </summary>
public static int Func1(int n)
{
if (n<0)
{
return 0;
}
if (n==1||n==0)
{
return 1;
}
else
{
return Func1(n - 1) * n;
}
}
d.斐波那契数列这个也是递归很经典的题目
public static int Fun(int n) {
// 先写递归结束条件
if (n <= 2) {
return 1;
}
// 写等价关系式
return f(n - 1) + f(n - 2);
}
- 输入整形数组,合并转换为逗号分隔的字符串
用foreach循环也可以,很简单。
/// <summary>
/// 输入整形数组,合并转换为逗号分隔的字符串
/// </summary>
/// <returns></returns>
public static string Fun2()
{
int[] arr = { 1, 2,34,3 };
string at="";
for (int i = 0; i < arr.Length; i++)
{
at += arr[i].ToString()+",";
}
return at;
}
- 一列数的规则如下:1,1,2,3,5,8,13,21,34,求第三十位时的大小,用递归实现。
观察递归结束条件,可知,从第三位开始,每一位的数值等于前两位之和。
即是 m=Fun(n-1)+Fun(n-2)
/// <summary>
/// 一列数的规则如下:1,1,2,3,5,8,13,21,34,求第三十位时的大小,用递归实现。
/// </summary>
/// <returns></returns>
public static int Fun3(int n)
{
if (n <= 0)
{
return 0;
}
if (n == 1 || n == 2)
{
return 1;
}
else
{
return Fun3(n - 1) + Fun3(n - 2);
}
}
- 输入五个实数,求最大值,最小值,平均值,不用数组。
public static void Func()
{
Console.WriteLine("请输入第一个数字");
var a = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个数字");
var b = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第三个数字");
var c = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第四个数字");
var d = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第五个数字");
var e = int.Parse(Console.ReadLine());
//找出abc中最大值赋给max1,再由max1和d,e去比。
var max1 = a > b ? (a > c ? a : c) : (b > c ? b : c);
var max = max1 > d ? (max1 > e ? max1 : e) : (d > e ? d : e);
var min1= a < b ? (a < c ? a : c) : (b < c ? b : c);
var min = min1 < d ? (min1 < e ? min1 : e) : (d < e ? d : e);
Console.WriteLine($"平均数为{(a + b + c + d + e) / 5}" );
Console.WriteLine($"最大值为{max}");
Console.WriteLine($"最小值为{min}");
}
- 随机输入1-100个数,不能重复
public static void Fun5()
{
List<int> art = new List<int>();
//定义随机数
var ran = new Random();
while (art.Count<100)
{
var a = ran.Next(1, 101);
if (!art.Contains(a))
{
art.Add(a);
}
}
int[] arr = art.ToArray();
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
Console.WriteLine($"数组的长度为{arr.Length}");
}
- 写一段程序,计算其中不重复元素的个数,方法一:用HashSet(倒序插入,集合自带去重)
public static void Fun6()
{
//方法一,用hashSet去重(集合自带去重,hashSet插入顺序是由后排到前)
int[] arr = { 3, 5, 9, 8, 10, 5, 3 };
HashSet<int> vs = new HashSet<int>(arr);
Console.WriteLine($"不重复元素的个数为{vs.Count}");
}
方法二:用新旧数组去重
public static void Fun7()
{
int[] arr = { 3, 5, 9, 8, 10, 5, 3 };
List<int> art = new List<int>();
foreach (var item in arr)
{
if (!art.Contains(item))
{
art.Add(item);
}
}
Console.WriteLine($"不重复个数为{art.Count}");
}
- 人机猜拳小游戏,用Switch循环
注意rand.next方法生成随机数区间是左开右闭,这里取到的是1,2,3,
//做人机猜拳用Switch
public static void Fun3()
{
Console.WriteLine("请输入(1-3):1.剪刀,2.石头,3.布");
int m = int.Parse(Console.ReadLine());
if (m == 1)
{
Console.WriteLine("你出:剪刀");
}
if (m == 2)
{
Console.WriteLine("你出:石头");
}
if (m == 3)
{
Console.WriteLine("你出:布");
}
var rand = new Random();
//注意rand.next方法生成随机数区间是左开右闭,这里取到的是1,2,3,
var n = rand.Next(1, 4);
switch (n)
{
case 1:
Console.WriteLine("计算机出:剪刀");
break;
case 2:
Console.WriteLine("计算机出:石头");
break;
case 3:
Console.WriteLine("计算机出:布");
break;
}
if (m == 1 && n == 1||m==2&&n==2||m==3&&n==3)
{
Console.WriteLine("结果是:平局");
}
//1.剪刀,2.石头,3.布
if (m==1&&n==2||m==2&&n==3||m==3&&n==1)
{
Console.WriteLine("结果是:计算机赢");
}
if (m==1&&n==3||m==2&&n==1||m==3&&n==2)
{
Console.WriteLine("结果是:你赢");
}
}