12月26 一维数组
********数组(解决同一类大量数据在内存存储和运算的功能)**********
分类:一维数组、二维数组、三维数组
一、一维数组:豆角形
1、定义: int[]a=new int[5];
其中int为数组类型,int[]代表int型数组,a为数组名称,new是创建的意思,5是数组的长度。
数组的定义类型很多,如:int[]a=new int[5]{20,30,40,50,60};这个是定义的同时赋值。
注意:这与C语言、java不同,后面的数字个数一定得与前面数字相同。
取值:Console.Write(a[i]);取值的形式
2、数组的好处:
(1)、对大量同类型的数据来说定义一个数组即可(简单方便)
(2)、用循环可以控制下标进行批量操作。
例如:
int[]a=new int[5]; for(int i=0;i<5;i++) // 批量赋值 { a[i]=(i+1)*10; } console.write(a[i]);
3、案例:
(1)、10个评委给一个选手打分,打分后,去掉一个最高,一个最低。
static void Main(string[] args) { int i, j, max = 0, min = 10000, k = 0, p = 0; int[] a = new int[10]; for (i = 0; i < 10; i++) { Console.Write("请输入你打的分数"); a[i] = Convert.ToInt32(Console.ReadLine()); } for (j = 0; j < 10; j++) { if (a[j] > max) { max = a[j]; } if (a[j] < min) { min = a[j]; } } for (j = 0; j < 10; j++) { if (max == a[j]) { k++; } if (min == a[j]) { p++; } } for (j = 0; j < 10; j++) { if (max != a[j] && min != a[j]) { Console.Write(a[j] + "\t"); } for (; k > 1; k--) { Console.Write(max + "\t"); } for (; p > 1; p--) { Console.Write(min + "\t"); } } }
效果图:
(2)、做一个36选7的彩票生成器。
static void Main(string[] args) { int i, j, k; int[] a = new int[7]; Random rand = new Random(); //随机生成器不能放在for循环里面 for (i = 0; i < 7; i++) { int n = rand.Next(36); n++; // 查重 bool chong = false; for (j = 0; j < a.Length; j++) { if (n == a[j]) { chong = true; break; } } if (chong == false) { a[i] = n; } else { i--; } // 将不符合要求的数清除,重新循环读入 } for (k = 0; k < a.Length; k++) { Console.Write(a[k] + "\t"); } }
效果图:
(3)、抽奖:从20个手机号中随机抽取一个中奖号码(滚动显示)。
static void Main(string[] args) { int i; long[] a = new long[20] { 18369195769, 18369192343, 18365432669, 15095765549, 13769195745, 18234567869, 15067889909, 13895766678, 13789201549,15192575779,13899265549,13895766678,13995765549,18369192343,18369115553,1509333333,15888888549, 15095765549,15095766666,15091234566 }; Random rand = new Random(); for (i = 0; i < 200; i++) { int n = rand.Next(20); System.Threading.Thread.Sleep(100); //调整每一个号码的显示时间 Console.Clear(); // 清屏 Console.Write(a[n] + "\t"); } }
(4)、选班长:30人投票,从五个人中选出一人当班长。
static void Main(string[] args) { int i, j, max = 0; int[] a = new int[5]; int[] n = new int[30]; Random rand = new Random(); //生成随机数 for (i = 0; i < 30; i++) { n[i] = rand.Next(5); //将生成的数赋给一个数组 Console.Write(n[i] + "\t"); for (j = 0; j < 5; j++) //经过循环将每个人所得票数统计一下 { if (j == n[i]) { a[j]++; } } } for (j = 0; j < 5; j++) // 找出票数最高的人 { if (a[j] > max) { max = a[j]; } } Console.Write("a[" + j + "]获得最高票,最高得票数是" + max + "票"); }
效果图: