数组
概念
一组数据类型相同的数
声明数组
//第一种方式
int[] num1 = new int[10]; //长度为10,下标为0-9,int类型
//第二种方式
int[] num2 = new int[] { 1,2,3,4,5}; //此数组就存5个值
//第三种方式
int[] num3 = new int[3] { 1, 2, 3 }; //个数和声明数必须一致。此数组就存3个值,值都清楚
//第四种方式
int[] num4 = { 1, 2, 3, 4, 5 }; //简写法
如何赋值
int[] num1=new int[10]; num1[8]=20; console.WriteLine(num1[8]); Console.WriteLine(
实例
一次语文测试,老师让班长统计每位学生的成绩并计算全部的平均成绩,然后把成绩显示出来
Console.WriteLine("请输入班级人数"); int avg = 0; int sum = 0; if (int.TryParse(Console.ReadLine(),out avg )) { int[] score = new int[avg]; for (int i = 0; i <score.Length ; i++) { Console.WriteLine("请输入第{0}个人的成绩",i++); score[i] = int.Parse(Console.ReadLine()); sum += score[i]; } Console.WriteLine("总成绩为{0},平均成绩为{1}",sum ,sum/avg); } else { Console.WriteLine("输入有误"); } Console.ReadKey(); }
求数组最大值、最小值、平均值、总和
int[] nums = { 1, 2, 3, 0, 9 }; int max = int.MinValue; //求最大值 int min = int.MaxValue; //求最小值 int sum = 0; //总和初始化为0 for (int i = 0; i < nums.Length ; i++) { if(nums[i]> max) //求最大值 { max = nums[i]; } if(nums[i]< min) //求最小值 { min = nums[i]; } sum += nums[i]; //求和 } Console.WriteLine("最大值为{0},最小值为{1},总和为{2},平均值为{3}",max,min,sum,sum/nums.Length ); Console.ReadKey();
冒泡排序
int[] nums = new int[] { 98, 54, 54, 322, 43, 23 }; //一个数组nums,并赋值(要被排序的数组) int temp = 0; for (int i = 0; i < nums.Length - 1; i++) //循环的轮数,需要6-1=5轮 { for (int j = 0; j < nums.Length - 1 - i; j++) //比较的次数(随着轮数的增加,比较次数减少) { if (nums[j] > nums[j + 1]) //相邻两数进行比较,如果前一位>后一位 { temp = nums[j]; //交换位置 nums[j] = nums[j + 1]; nums[j + 1] = temp; } } } for (int i = 0; i < nums.Length ; i++) //循环输出排序之后的数组元素 { Console.Write(nums[i]+"\t"); //在控制台输出结果,并排序(\t) } Console.ReadKey();
数组排序正向输出
int[] nums = new int[] { 1, 2, 3, 4, -1 }; Array.Sort(nums); for (int i = 0; i < nums.Length ; i++) { Console.WriteLine(nums[i] + "\t"); } Console.ReadKey ();
数组排序逆向输出
int[] nums = new int[] { 1, 2, 4, 3, -1 }; //定义一个数组,并赋值 Array.Sort(nums); //Array类,对数组元素进行排序 //Array.Reverse(nums); //反转,颠倒原来数组,如,颠倒后:-1,3,4,2,1 for (int i = nums.Length - 1; i >= 0; i--) //倒着输出结果 { Console.Write(nums[i] + "\t"); } Console.ReadKey();
利用数组方法调用:计算一个数组所有元素的最大值、最小值、平均值、总和
class Program { static void Main(string[] args) { Program.ArraySort(); //调用ArraySort这个方法 Console.ReadKey(); } public static void ArraySort() //写了一个ArraySort方法,对数组进行排序 { int[] nums = new int[] { 2, 3, 43, 23, 243, 3 }; //定义一个数组,并赋初值 int max = int.MinValue; //最大值 int min = int.MaxValue; //最小值 int sum = 0; //给求和赋初值为0 for (int i = 0; i < nums.Length; i++) //for循环,对数组进行遍历 { if (nums[i] > max) //求最大值 { max = nums[i]; } if (nums[i] < min) //求最小值 { min = nums[i]; } sum += nums[i]; //求和 } Console.WriteLine("最大值为:{0},最小值为:{1}", max, min); //在控制台输出最大值、最小值 Console.WriteLine("和为:{0},平均值为:{1}", sum, sum / nums.Length); //在控制台输出和、平均数 } }
数组里面的人名分割成阿花|阿杰|阿健
string[] names = new string[] { "阿花", "阿杰", "阿健" }; string result = "";//定义一个字符串result用来接收加|之后的元素 for (int i = 0; i <names.Length- 1; i++)//for循环遍历数组元素 { result += names[i] + "|";//result=names某个元素+| } Console.WriteLine(result+names[names.Length-1]);//在控制台输出结果,最后一个元素不加“|” Console.ReadKey();
将一个整数数组的每一个元素进行处理:如果元素是正数则将这个位置的元素的值+1;如果元素是负数则将这个位置的元素的值-1;如果元素是0,则不变
int[] nums = new int[] { -2, 3, 43, 23, 243, 3,0}; for (int i = 0; i < nums.Length; i++) { if (nums[i]>0) { nums[i]++; } if(nums[i]<0) { nums[i]--; } } for (int i = 0; i < nums.Length; i++) { Console.WriteLine(nums[i]+"\t"); } Console.ReadKey();
forr:反转,颠倒原来数组
将一个字符串数组的元素的顺序进行反转:{”我“,”是“,“好人”}{”好人“,”是“,”我“}。第i个和第length-i-1个进行交换
//方法一:Array.Reverse
string[] text = new string[] { "我", "是", "好人" }; //定义一个数组text并赋值 Array.Reverse(text); //反转 for (int i = 0; i < str.Length; i++) //遍历数组 { Console.Write(str[i] + "\t"); //在控制台输出结果,注:\t是水平制表符 } Console.ReadKey();
//方法二:forr反转
Array.Sort(text); for (int i = text.Length - 1; i >= 0; i--) { Console.Write(text[i] + "\t"); } Console.ReadKey();