朋友說他媳婦特別懶,我問咋了,他說他家住三樓,他媳婦每次在網(wǎng)上買東西的時(shí)候都在備注上寫:孕婦,行動(dòng)不便,請送貨上門。
前些天,送快遞的小哥終于忍不住了,在樓下大喊:三年了,我忍了你三年了!你懷的是哪吒么?!

========================手動(dòng)分割線==========================
一維數(shù)組在數(shù)組中最常用,即將一組值存放到一個(gè)數(shù)組中,并為其定義一個(gè)名稱,通過數(shù)組中元素的位置來存取值。
一、數(shù)組
- 數(shù)組的作用:用于存儲(chǔ)具有"相同數(shù)據(jù)類型"的"有序"隊(duì)列
- 數(shù)組的缺點(diǎn):只能存放相同數(shù)據(jù)類型的變量
- 數(shù)組所占用的內(nèi)容空間大?。簲?shù)組中數(shù)組的元素個(gè)數(shù)*每個(gè) 元素所占空間大小
數(shù)組的定義:
- 格式:數(shù)據(jù)類型[] 數(shù)組名;
- 初始化:數(shù)組要想使用,必須要進(jìn)行初始化
- 初始化數(shù)組有兩種形式:動(dòng)態(tài)初始化和靜態(tài)初始化
1.數(shù)組的動(dòng)態(tài)初始化
- 第一種形式:不給定初始值
借助new運(yùn)算符為數(shù)組元素分配內(nèi)存空間
格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組元素個(gè)數(shù)];
如果在不給定初值的情況下,各個(gè)元素有默認(rèn)值:
整型: 0
布爾類型: false
字符串: null
- 第二種形式:初始化數(shù)組過程中,賦初值
格式:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度]{元素1,元素2};
注意1:如果指定了數(shù)組的長度,元素的個(gè)數(shù)就要與數(shù)組的長度一致,否則會(huì)編譯錯(cuò)誤
注意2:如果不指定數(shù)組的長度的時(shí)候,默認(rèn)就會(huì)以數(shù)組的初值的個(gè)數(shù)來作為 數(shù)組的長度
注意3:當(dāng)不指定數(shù)組長度,也不指定數(shù)組初值的時(shí)候,會(huì)報(bào)錯(cuò)
-
動(dòng)態(tài)初始化示例:
//定義一個(gè)整型變量 int a = 0; //定義三個(gè)整形變量 int b = 0; int c = 0; int d = 0; //定義一個(gè)能夠存放10個(gè)int類型的數(shù)組,并進(jìn)行初始化 int[] array = new int[10]; //定義一個(gè)float類型數(shù)組,并進(jìn)行初始化,指定數(shù)組長度 //為3,并符初值2.1f,3.14f,2.5f float[] arr; arr = new float[3]{ 2.1f, 3.14f, 2.5f }; //定義一個(gè)字符串類型的數(shù)組names,能夠存放四個(gè)人的姓名,分別 //是老王、老漢、老馬、老宋 string[] names = new string[4]{"老王","老漢","老馬","老宋"}; string[] strs = new string[] { "aaa", "bbb" }; //數(shù)組的長度: 數(shù)組名.Length ,返回一個(gè)int類型的數(shù)據(jù) int length = strs.Length; Console.WriteLine ("strs的長度" + length);
2、數(shù)組的靜態(tài)初始化
- 不需要借助new這個(gè)關(guān)鍵字,直接賦值,默認(rèn)是以數(shù)組的初值 的個(gè)數(shù)為這個(gè)數(shù)組的長度
- 格式:數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,...};
示例如下:
//使用靜態(tài)初始化的形式創(chuàng)建一個(gè)float類型的數(shù)組
//數(shù)組中的值用來存儲(chǔ)身高:168.1f,172.5f,182.3f
float[] heights = { 168.1f, 172.5f, 182.3f };
Console.WriteLine (heights.Length);
//注意4:如果使用靜態(tài)初始化方法初始化數(shù)組,數(shù)組的定義
//和初始化是不能分開的
float[] heights; //error,這個(gè)會(huì)報(bào)錯(cuò)
heights = {168.1f};
二、數(shù)組元素的訪問
- 訪問方式: 數(shù)組名+下標(biāo)
- 注意:數(shù)組下標(biāo)的范圍:從0開始,到數(shù)組長度-1。
- 下標(biāo)可以是常量,也可以是變量。系統(tǒng)不會(huì)自動(dòng)檢測我們訪問數(shù)組元素時(shí)下標(biāo)是否越界,必須保證 下標(biāo)不能越界。
示例如下:
int[] arr = new int[5]{ 1, 3, 5, 7, 9 };
//輸出值為3的元素
Console.WriteLine (arr [1]);
//將數(shù)組中值為5的元素改為值為100
arr [2] = 100;
Console.WriteLine (arr [2]);
//輸出數(shù)組中第二個(gè)元素和第四個(gè)元素
Console.WriteLine ("第二個(gè)元素:{0},第四個(gè)元素:{1}", arr [1], arr [3]);
//輸出數(shù)組中所有元素
Console.WriteLine ("所有元素:" + arr [0] + " " +
arr [1] + " " + arr [2] + " " + arr [3] + " " + arr [4]);
for (int i = 0; i < arr.Length; i++) {
Console.WriteLine (arr [i]);
}
三、數(shù)組和循環(huán)的結(jié)合使用
- 數(shù)組是一個(gè)整體,不能直接參加運(yùn)算(賦值運(yùn)算除外),只能對單個(gè)元素進(jìn)行處理,通常用到數(shù)組的地方,都會(huì)用到循環(huán)
練習(xí):定義含有10個(gè)元素的整形數(shù)組,元素隨機(jī)賦值,范圍[10,40],求出數(shù)組中元素最大值
//1、存儲(chǔ)最大值
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來比較數(shù)組中的每個(gè)元素
//如果數(shù)組中的元素大于max值,更新max的值為數(shù)組元素的值
//if (array [i] > max) {
// max = array [i];
//}
max = array [i] > max ? array [i] : max;
Console.Write (array [i] + " ");
}
Console.WriteLine ("數(shù)組中最大值為:" + max);
練習(xí):定義一個(gè)10個(gè)元素的整型數(shù)組,范圍是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) {
//如果數(shù)組中元素比最大值max大,此時(shí)max是第二大值,arr[i]是最大值
//將原來的最大值(實(shí)際現(xiàn)在變成老二了,賦值給第二大值)
secMax = max;
//把最大值arr[i]賦值給max
max = arr [i];
//這里通過判斷數(shù)組元素如果不是最大值,就賦值給第二大值
} else if (arr [i] > secMax && arr [i] != max) {
secMax = arr [i];
}
Console.Write (arr [i] + " ");
}
Console.WriteLine ("最大值:{0},第二大:{1}", max, secMax);
練習(xí):猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,每天都吃了前一天剩下的一半零一個(gè),到第10天早上想再吃的時(shí)候,就剩下一個(gè)桃子. 求第一天共摘多少個(gè)桃子。
int total = 1;
int day = 10;
for (int i = 10; i > 0; i--) {
total = (total + 1) * 2;
day--;
}
Console.WriteLine (total);
本次講解就到這里,有關(guān)技術(shù)問題請小伙伴們添加QQ群:941928511,大家一起探討!
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上原文出處鏈接和本聲明