第八課第一節讓你零基礎搞懂陣列(一維陣列)

2021-10-07 06:43:08 字數 3729 閱讀 4288

二、一維陣列

在此前的程式中,所使用的變數均為標量型別(即基本型別)的變數。

然而,當乙個程式需要儲存批量資料時,使用標量型別的變數甚為不便。

此時,可以使用一種組合型別的資料陣列。

總結一下就是因為定義一堆變數太麻煩人了,還不便於管理,就像公布成績的時候乙個同學一張成績單,老師折騰也費勁,所以想辦法整合一下,同型別的整理在一起,全班人的成績整理成一張**,也就是乙個集合體,所以在程式中也得想辦法把同型別的變數整合在一起,不過這個集合體不叫**,叫陣列

所謂陣列,是一組有序變數的集合,而且這些變數具有相同的資料型別

(你把a同學學號跟b同學身份證號混在乙個統計學號的**裡不行吧,人家就是int型的,你非得給人家塞進去個float型的也說不太過去吧)

陣列中的變數稱為陣列元素

別管有沒有賦值,乙個**我列了幾行就是幾行,不管我有沒有寫東西,所以元素不管有沒有賦值,我定義了幾個就是幾個

比如這裡就是6個元素,雖然我只賦值了三個元素

而且這種定義的時候就賦初值的,陣列裡其他的未賦值元素都是0。這種賦值方法還是蠻重要的,畢竟有隨機值做題的時候可能會出錯。

陣列元素的個數稱為陣列長度

陣列中最常用的是一維陣列

一維陣列中的所有元素可以看作一行。

一維陣列的每個元素只需要乙個序號(也稱為下標)。

一維陣列就一行想用別的區分你也沒機會啊

在程式中使用陣列時,必須先定義後使用。

型別名,陣列名[陣列長度];

例如:int a[10];

定義了乙個一維陣列a,包含10個int型的陣列元素,即a[0]、a[1]、 a[2]、…a[9]。

每個陣列元素有乙個序號(也稱為下標)。

一維陣列的元素,不但在名稱上是有序的,在記憶體中的儲存也是連續且有序的。

陣列元素的有序性特點,使得陣列元素適合於採用迴圈處理。

(以後題目大部分都跟迴圈有關,畢竟都在一行裡面,順序結構多舒服,排著順序輸入輸出多好,難道還乙個個手動嗎,那也就沒陣列的必要了)

這就有意思了,a[10]是從a[0]到a[9]數一下,0到9是十個數字對吧,先把數目對起來,不能缺斤少兩啊。

然後呢為啥從0開始,這個跟c語言的取位址啊啥的有關,不從0的話計算量會增大,這只是其中之一,我感覺有一篇解釋文章挺好的,放在下面了,有興趣可以去看看

ok,為啥從0開始就解釋清楚了,然後數目(或者正規一點:元素個數)也對起來了

在c89標準中,不允許定義變長陣列,即在表示陣列長度的表示式中,不能包含變數名。

而在c99標準中,則允許定義變長陣列。即陣列長度可以是整型變數或整型變數的表示式。

例如:

int n=10;

int a[n]

;//在c89標準中是錯誤的。

//在c99標準中正確合法

在程式中,一般不能將一維陣列作為乙個整體進行輸入、輸出和運算。

而只能針對一維陣列的元素進行操作。

這個操作方法跟以前一樣,本質上他還是個變數,怎麼操作變數就怎麼運算元組。一把菜刀跟一堆菜刀放在一起還能變成屠龍刀嗎?

int a[10]

;a[0]

=100

;//a[0]是陣列元素。

a[10]=

200;

/*是錯誤的

因為陣列a中沒有a[10]這個元素

這種錯誤稱為下標越界

在程式中引用陣列元素時,陣列元素的下標可以用變數表示。

很多陣列題目都是這麼玩的,就因為陣列下標可以用變數表示

對陣列元素的操作方法,與同型別變數的操作方法相同。

i=0;

a[i]

=100

;//等價於a[0

]=100;

printf

("%d"

,a[i]);

printf

("%d"

,a[0])

;

程式設計思路:

首先定義如下陣列和變數: int a[10],i;

然後完成該陣列元素的輸入與輸出。

int a[10]

,i;a[

10]就是因為10個元素

他要是說100

就a[100

]i就是那個變數了

i就為為了存放下標的

首先用順序結構完成輸入:i=0

;scanf

("%d"

,&a[i]);

//等價於scanf("%d" ,&a[0]);i=1

;scanf

("%d"

,&a[i]);

i=2;scanf

("%d"

,&a[i]);

i=3;scanf

("%d"

,&a[i]);

i=4;scanf

("%d"

,&a[i]);

i=5;scanf

("%d"

,&a[i]);

i=6;scanf

("%d"

,&a[i]);

i=7;scanf

("%d"

,&a[i]);

i=8;scanf

("%d"

,&a[i]);

i=9;scanf

("%d"

,&a[i]);

上面就是不用迴圈的後果

上述語句組可以歸納為如下的迴圈:

for(i=

0;i<=

9;i++

)scanf

("%d"

,&a[i]);

同樣逆序輸出

然後用順序結構完成輸出:i=9

;printf

("%d"

,a[i]);

//等價於printf("%d ",a[9]);i=8

;printf

("%d"

,a[i]);

....

.i=0;

printf

("%d"

,a[i]);

上述語句組可以歸納為如下的迴圈:

for(i=

9;i>=

0;i--

)printf

("%d"

,a[i]

);

完整源程式

#include

intmain()

效果如下

在定義一維陣列的同時,給陣列元素賦值,稱為陣列的初始化。

給所有元素賦初值:

int a[6]

=;

可以只給部分元素賦初值。

例如:

inta[6]

=;

此時,其它元素自動取0。

初始化時,可以不指定一維陣列的長度。

例如:

inta=

;

系統編譯時,能根據初值的個數自動確定陣列長度。

不過,inta;這種形式是錯誤的,因為無法確定陣列的長度。

就不想寫的很長,那樣太長了不想看,所以我就分開寫

Python 第二節 第八課

toc 我們可以使用 特殊字元 實現某些難以用字元表示的效果.比如 換行等.常見的轉義字元有這些 在結尾時 續行符 反斜槓符號 單引號 雙引號 b 退格 backspace n 換行 t 橫向製表符 r 回車 1.可以使用 將多個字串拼接起來.例如 aa bb aabb 1 如果 兩邊都是字串,則拼...

第一節課作業

1.c語言程式的基本語句能完成功能的體會 雖說c語言的基本語句不多,但通過複雜的組合能有非常強大的處理能力,在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們 學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。學習c程式語...

Android 第一節課

android 第一節課 android 第一節課 view與wiewgroup view和viewgroup介紹 view類似於swing中的jpanel,代表乙個空白的矩形區域,android應用中的絕大部分ui元件都繼承於view或其子類 view還乙個重要的子類viewgroup,它通常作為...