.net基础笔记7
1. 数组的求和求平均数求最大值最小值以及排序
例如:
//求和,求平均值,找最大值,找最小值,并排序后按升序输出
int sum = 0;
int[] a = { 3, 4, 5, 364, 6, 262, 626, 6, 2, 62 - 4325, 2525, -5254, 523, -5242, 231424, 4125432, 544, -98392 };
int max = a[0];
int min = a[0];
for (int i = 0; i < a.Length; i++)
{
sum += a[i];//求和
if (a[i] > max)//求最大值
{
max = a[i];
}
if (a[i] < min)//求最小值
{
min = a[i];
}
}
Console.WriteLine("这个数组的和为:{0}", sum);
Console.WriteLine("这个数组的平均值为:{0}", sum / a.Length);
Console.WriteLine("这个数组的最大值为:{0}", max);
Console.WriteLine("这个数组的最小值为:{0}\n", min);
Console.WriteLine("输出没有排序的这个数组:");
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]);
Console.Write("\t");
}
Console.WriteLine("\n\n升序排序:");
Array.Sort(a);//升序排序
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]);
Console.Write("\t");
}
Console.WriteLine("\n\n降序排序:");
Array.Reverse(a);//降序排序(反转升序排序)
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]);
Console.Write("\t");
}
Console.ReadKey();
结果:
关于2个数组排序的方法:
Array.Sort(a);//升序排序
Array.Reverse(a);//反转数组元素(反转升序排序后变为降序排序)
2. 冒泡排序法
1)从小到大排序叫升序排序,用>号进行比较,成立则交换
2)从大到小排序叫降序排序,用<号进行比较,成立则交换
3)原理:
要进行升序排序的数:9 8 7 6 5 4 3 2 1 0
0第1趟:8 7 6 5 4 3 2 1 0 9 第1遍,9次比较,最大数到了最后一位
1第2趟:7 6 5 4 3 2 1 0 8 9 第2遍,8次比较,最大数到了倒数第2位
2第3趟:6 5 4 3 2 1 0 7 8 9 第3遍,7次比较,最大数到了倒数第3位
3第4趟:5 4 3 2 1 0 6 7 8 9 第4遍,6次比较,最大数到了倒数第4位
4第5趟:4 3 2 1 0 5 6 7 8 9 第5遍,5次比较,最大数到了倒数第5位
5第6趟:3 2 1 0 4 5 6 7 8 9 第6遍,4次比较,最大数到了倒数第6位
6第7趟:2 1 0 3 4 5 6 7 8 9 第7遍,3次比较,最大数到了倒数第7位
7第8趟:1 0 2 3 4 5 6 7 8 9 第8遍,2次比较,最大数到了倒数第8位
8第9趟:0 1 2 3 4 5 6 7 8 9 第9遍,1次比较,最大数到了倒数第9位
10个数共排了10-1趟,设t为趟数,第t趟比较了10-t次
设共有n个数,i为循环变量,i控制趟数,n个数要排n-1趟,循环次数为i=t-1,
那么第i趟要比较n-1-i次
用循环就是:
4)例如:
//输入一个数组进行冒泡排序
int ArrayLenth;
while (true)
{
Console.WriteLine("请输入这个数组的长度:");
try
{
ArrayLenth = Convert.ToInt32(Console.ReadLine());
int[] Array = new int[ArrayLenth];
int ArrayYuansu;
for (int i = 0; i < Array.Length; i++)//输入数组的元素
{
while (true)
{
Console.WriteLine("请输入数组的第{0}个元素:", i + 1);
try
{
ArrayYuansu = Convert.ToInt32(Console.ReadLine());
Array[i] = ArrayYuansu;
break;
}
catch
{
Console.WriteLine("请输入整数作为数组的元素:");
continue;
}
}
}
Console.WriteLine("\n数组的元素为:\n");
for (int i = 0; i < Array.Length; i++)//输出数组的元素
{
Console.Write(Array[i] + "\t");
}
//数组升序冒泡法
int temp;
for (int j = 0; j < Array.Length - 1; j++)//数组比较的趟数
{
for (int k = 0; k < Array.Length - 1 - j; k++)//数组中元素大小比较的次数
{
if (Array[k] > Array[k + 1])
{
temp = Array[k];
Array[k] = Array[k + 1];
Array[k + 1] = temp;
}
}
}
//升序排序后的数组
Console.WriteLine("\n输出升序排序后数组的元素:\n");
for (int i = 0; i < Array.Length; i++)
{
Console.Write(Array[i] + "\t");
}
//数组降序冒泡法
int temp1;
for (int j = 0; j < Array.Length - 1; j++)//数组比较的趟数
{
for (int k = 0; k < Array.Length - 1 - j; k++)//数组中元素大小比较的次数
{
if (Array[k] < Array[k + 1])
{
temp1 = Array[k];
Array[k] = Array[k + 1];
Array[k + 1] = temp1;
}
}
}
//降序排序后的数组
Console.WriteLine("\n输出降序排序后数组的元素:\n");
for (int i = 0; i < Array.Length; i++)
{
Console.Write(Array[i] + "\t");
}
break;
}
catch
{
Console.WriteLine("请输入一个正整数作为数组的长度:");
continue;
}
}
Console.ReadKey();
结果:
3. 函数(方法)
方法的好处:
1)方法就是讲一堆代码进行重用的机制
2)一个方法实现一个功能
方法的声明语法:
[访问修饰符] [static] 返回值类型 方法名([参数列表])
{
方法体;
}
访问修饰符可以省略,也可以写public
static:可以省略。没有static的方法叫实例方法,有static的方法叫静态方法。我们现在学习的方法都是静态方法。
返回值类型:如果没有返回值,就写void表示没有返回值类型。
方法名称:自己起名字,但是要符合变量的命名规则。
():注意:不管小括号里有没有参数列表,都不能省略。
参数列表:可省略。先学习没有参数列表,所以先都省略。
{}:表示这个方法的开始与结束,这对大括号里就是方法体。方法体中的内容可以参考main方法。
方法的调用:
在静态方法中调用静态方法:类名.方法名([参数]);
如果在本类中调用方法,类名可以省略。
局部变量:定义在方法中的变量叫局部变量。
局部变量的作用域:从定义到定义结束的那个语句块(大括号)结束为止,这个变量就不能用。
main方法叫调用者,自己写的方法叫被调用者。当被调用者想得到调用者的变量值时,有2种解决方法:
1)把变量定义到方法之外,那么定义在类中的又叫这个变量做“字段”,每个字段都可以被这个类中的所有方法访问到(静态方法只能访问静态字段)。
2)通过参数把值传到被调用者的方法中