朋友说他媳妇特别懒,我问咋了,他说他家住三楼,他媳妇每次在网上买东西的时候都在备注上写:孕妇,行动不便,请送货上门。
前些天,送快递的小哥终于忍不住了,在楼下大喊:三年了,我忍了你三年了!你怀的是哪吒么?!
========================手动分割线==========================
一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。
一、数组
- 数组的作用:用于存储具有"相同数据类型"的"有序"队列
- 数组的缺点:只能存放相同数据类型的变量
- 数组所占用的内容空间大小:数组中数组的元素个数*每个 元素所占空间大小
数组的定义:
- 格式:数据类型[] 数组名;
- 初始化:数组要想使用,必须要进行初始化
- 初始化数组有两种形式:动态初始化和静态初始化
1.数组的动态初始化
- 第一种形式:不给定初始值
借助new运算符为数组元素分配内存空间
格式:数据类型[] 数组名 = new 数据类型[数组元素个数];
如果在不给定初值的情况下,各个元素有默认值:
整型: 0
布尔类型: false
字符串: null
- 第二种形式:初始化数组过程中,赋初值
格式:数据类型[] 数组名 = new 数据类型[数组长度]{元素1,元素2};
注意1:如果指定了数组的长度,元素的个数就要与数组的长度一致,否则会编译错误
注意2:如果不指定数组的长度的时候,默认就会以数组的初值的个数来作为 数组的长度
注意3:当不指定数组长度,也不指定数组初值的时候,会报错
-
动态初始化示例:
//定义一个整型变量 int a = 0; //定义三个整形变量 int b = 0; int c = 0; int d = 0; //定义一个能够存放10个int类型的数组,并进行初始化 int[] array = new int[10]; //定义一个float类型数组,并进行初始化,指定数组长度 //为3,并符初值2.1f,3.14f,2.5f float[] arr; arr = new float[3]{ 2.1f, 3.14f, 2.5f }; //定义一个字符串类型的数组names,能够存放四个人的姓名,分别 //是老王、老汉、老马、老宋 string[] names = new string[4]{"老王","老汉","老马","老宋"}; string[] strs = new string[] { "aaa", "bbb" }; //数组的长度: 数组名.Length ,返回一个int类型的数据 int length = strs.Length; Console.WriteLine ("strs的长度" + length);
2、数组的静态初始化
- 不需要借助new这个关键字,直接赋值,默认是以数组的初值 的个数为这个数组的长度
- 格式:数据类型[] 数组名 = {元素1,元素2,...};
示例如下:
//使用静态初始化的形式创建一个float类型的数组
//数组中的值用来存储身高:168.1f,172.5f,182.3f
float[] heights = { 168.1f, 172.5f, 182.3f };
Console.WriteLine (heights.Length);
//注意4:如果使用静态初始化方法初始化数组,数组的定义
//和初始化是不能分开的
float[] heights; //error,这个会报错
heights = {168.1f};
二、数组元素的访问
- 访问方式: 数组名+下标
- 注意:数组下标的范围:从0开始,到数组长度-1。
- 下标可以是常量,也可以是变量。系统不会自动检测我们访问数组元素时下标是否越界,必须保证 下标不能越界。
示例如下:
int[] arr = new int[5]{ 1, 3, 5, 7, 9 };
//输出值为3的元素
Console.WriteLine (arr [1]);
//将数组中值为5的元素改为值为100
arr [2] = 100;
Console.WriteLine (arr [2]);
//输出数组中第二个元素和第四个元素
Console.WriteLine ("第二个元素:{0},第四个元素:{1}", arr [1], arr [3]);
//输出数组中所有元素
Console.WriteLine ("所有元素:" + arr [0] + " " +
arr [1] + " " + arr [2] + " " + arr [3] + " " + arr [4]);
for (int i = 0; i < arr.Length; i++) {
Console.WriteLine (arr [i]);
}
三、数组和循环的结合使用
- 数组是一个整体,不能直接参加运算(赋值运算除外),只能对单个元素进行处理,通常用到数组的地方,都会用到循环
练习:定义含有10个元素的整形数组,元素随机赋值,范围[10,40],求出数组中元素最大值
//1、存储最大值
int max = 0;
Random ran = new Random ();
int[] array = new int[10];
for (int i = 0; i < 10; i++) {
int random = ran.Next (10, 40);
array [i] = random;
//2、开始比较,用max来比较数组中的每个元素
//如果数组中的元素大于max值,更新max的值为数组元素的值
//if (array [i] > max) {
// max = array [i];
//}
max = array [i] > max ? array [i] : max;
Console.Write (array [i] + " ");
}
Console.WriteLine ("数组中最大值为:" + max);
练习:定义一个10个元素的整型数组,范围是10~30,求所有元素的第二大值
int max = 0, secMax = 0;
int[] arr = new int[10];
Random ran = new Random ();
for (int i = 0; i < 10; i++) {
int random = ran.Next (10, 30);
arr [i] = random;
if (arr [i] > max) {
//如果数组中元素比最大值max大,此时max是第二大值,arr[i]是最大值
//将原来的最大值(实际现在变成老二了,赋值给第二大值)
secMax = max;
//把最大值arr[i]赋值给max
max = arr [i];
//这里通过判断数组元素如果不是最大值,就赋值给第二大值
} else if (arr [i] > secMax && arr [i] != max) {
secMax = arr [i];
}
Console.Write (arr [i] + " ");
}
Console.WriteLine ("最大值:{0},第二大:{1}", max, secMax);
练习:猴子吃桃问题。猴子第一天摘下若干个桃子,每天都吃了前一天剩下的一半零一个,到第10天早上想再吃的时候,就剩下一个桃子. 求第一天共摘多少个桃子。
int total = 1;
int day = 10;
for (int i = 10; i > 0; i--) {
total = (total + 1) * 2;
day--;
}
Console.WriteLine (total);
本次讲解就到这里,有关技术问题请小伙伴们添加QQ群:941928511,大家一起探讨!
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明