数组
数组用来分组基本类型或相同类型的对象。数组中的实体叫做数组的元素或成员。
我们可以用Length来得到其中的元素的数目。(应用同字符串)
内存、连续、同一类数据的一块区域
分类:
一维数组
int [ ]a = new int [5]; //定义一个整形数组a,该数组含5个元素(数组下标都是从0开始)
二维数组
三维数组
附:
编程时要使功能相对独立
应用举例:
//10个球员的总分、平均分、最高分、最低分 int[] a = new int[10]; for (int i = 1; i <= 10; i++) { Console.Write("请输入" + i + "号球员分数:"); a[i - 1] = Convert.ToInt32(Console.ReadLine()); } int sum = 0; for (int k = 0; k < 10; k++) { sum = sum + a[k]; } Console.WriteLine("总分为:" + sum); Console.WriteLine("平均分:" + (1.0 * sum / a.Length)); //找最高分、最低分 int max = a[0]; int min = a[0]; int max1 = 0; int min1 = 0; for (int j = 0; j < 10; j++) { if (a[j] > max) { max = a[j]; max1 = j + 1; } if (a[j] < min) { min = a[j]; min1 = j + 1; } } Console.WriteLine("最高分为:{0}号球员{1}", max1, max); Console.WriteLine("最低分为:{2}号球员{3}", min1, min); //分数按升序排序 int b = a[0]; for (int m = 0; m < 10; m++) { for (int n = 1; n < 10; n++) { if (a[n] < a[n - 1]) { b = a[n]; a[n] = a[n - 1]; a[n - 1] = b; } } } Console.WriteLine("分数按升序排列:"); for (int c = 0; c < 10; c++) { Console.Write(a[c] + "\t"); }
//去掉一个最高分一个最低分,求平均分 int[] a = new int[10]; for (int i = 1; i <= 10; i++) { Console.Write("请输入分数" + i + ":"); a[i - 1] = Convert.ToInt32(Console.ReadLine()); } int sum = 0; for (int i = 0; i < 10; i++) { sum = sum + a[i]; } int max = a[0], min = a[0]; for (int j = 1; j < 10; j++) { if (a[j] > max) { max = a[j]; } if (a[j] < min) { min = a[j]; } } Console.WriteLine("去掉一个最高分{0},去掉一个最低分{1},平均分是{3}", max, min, 1.0 * (sum - max - min) / 8);
//去掉2个最高分和2个最低分,求平均分 //定义一个整型数组,用来存放分数 int[] a = new int[10]; for (int i = 1; i <= 10; i++) { Console.Write("请输入分数" + i + ":"); a[i - 1] = Convert.ToInt32(Console.ReadLine()); } //求总分 int sum = 0; for (int i = 0; i < 10; i++) { sum = sum + a[i]; } //选出最高分跟最低分,以及对应的元素 int max = a[0], min = a[0], max_no = 0, min_no = 0; for (int j = 1; j < 10; j++) { if (a[j] > max) { max = a[j]; max_no = j; } if (a[j] < min) { min = a[j]; min_no = j; } } //选出次高分跟次低分 int max1 = a[0], min1 = a[0]; for (int j = 1; j < 10; j++) { if (a[j] > max1 && j != max_no) { max1 = a[j]; } if (a[j] < min1 && j != min_no) { min1 = a[j]; } } double average = 1.0 * (sum - max - max1 - min - min1) / 6; Console.WriteLine("去掉2个最高分,去掉2个最低分,平均分是{0}", average);
//5个候选班长,20人投票,求票数最多的 string[] x = new string[20]; for (int i = 0; i < 20; i++) { Console.WriteLine("请输入数字0~5"); Console.Write((i + 1) + "号投票:"); x[i] = Console.ReadLine(); } int[] y = new int[5]; for (int i = 0; i < 20; i++) { if (x[i] == "0") { y[0]++; } else if (x[i] == "1") { y[1]++; } else if (x[i] == "2") { y[2]++; } else if (x[i] == "3") { y[3]++; } else if (x[i] == "4") { y[4]++; } } int max = y[0], max1 = 0; for (int i = 1; i < 5; i++) { if (y[i] > max) { max = y[i]; max1 = i; } } Console.WriteLine("{0}以{1}票当选班长!", max1, max); //上面的方法有局限性,当人数多票数多时,用以下方法: int[] votes = new int[5]; for (int i = 0; i < 20; i++) { Console.Write("请投票(0-4):"); int n = Convert.ToInt32(Console.ReadLine()); if (n >= 0 && n <= 4) { votes[n]++; } else { Console.WriteLine("废票"); } } //找最大 int max = votes[0], max1 = 0; for (int i = 1; i < 5; i++) { if (votes[i] > max) { max = votes[i]; max1 = i; } } Console.WriteLine("{0}以{1}票当选班长!", max1, max);
//36选7 int[] a = new int[7]; Random ran = new Random(); //生成7个数,比较是否重复并赋值给数组每个元素 for (int i = 1; a[6]==0; i++) { int n = ran.Next(36)+1; for (int j = 0; j < 7; j++) { if (a[j] == n) { break; } if (a[j] == 0) { a[j] = n; break; } } } //输出 for (int i = 0; i < 7; i++) { Console.Write(a[i]+"\t"); }