【數組】
爲什麼需要數組
爲了解決大量同類型數據的的存儲和使用問題
爲了模擬現實世界
-------------------------
#include <stdio.h>
int main()
{
int a[5] = {1,2,3,4,5}; //a是數組的名字,5表示數組元素的個數,並且這個5個元素分別用a[0] a[1] a[2] a[3] a[4] 表示
int i;
for(i=0; i<5; ++i)
printf("%d\n",a[i]); //將會依次輸出a[5]裏面的5個元素的值1 2 3 4 5
printf("%d\n",a[100]); //因爲a[100]沒有在a[5]裏面所以,會是輸出一個其他的值
return 0;
}
-----------------------------------
數組的分類
一維數組
怎樣定義一維數組
爲那個變量連續分配存儲空間
所有的變量數據類型必須相同
所有變量所佔字節大小必須相等
列子:
int a[5];
一維數組名不代表數組中所有的元素
一維數組名代表數組第一個元素的地址
有關一維數組的操作
初始化
完全初始化
int a[5] = {1,2,3,4,5};
不完全初始化,未進行初始化的元素自動爲零
int a[5] = {1,2,3};
不初始化,所有元素是垃圾值
int a[5];
清零,裏面的每個元素初始值都爲零
int a[5] = {0};
錯誤寫法:
int a[5];
a[5] = {1,2,3,4,5}; //錯誤
只有在定義數組的同時纔可以整體賦值,其他情況下整體賦值都是錯誤的
只有在定義數組的時候,中括號裏面的數字才表示元素的個數,其他時候都表示爲裏面元素的下標,即元素的位置
int a[5] = {1,2,3,4,5};
a[5] = 100; //錯誤,因爲沒有a[5]這個元素,內裏元素最大隻到到a[4]
int a[5] = {1,2,3,4,5};
int b[5];
如果要把a數組中的值全部複製給b數組,怎麼寫呢?
錯誤的寫法:
b = a;// error,因爲這裏的a代表的是a[5]這個數組裏面的第一個元素的地址
正確的寫法:
for(i=0;i<5;++i)
b[i] = a[i];
賦值------------------------------------
#include <stdio.h>
int main()
{
int a[5];
int i;
scanf("%d",a[0]);
printf("a[0]=%d\n",a[0]);
scanf("%d",a[3]);
printf("a[3]=%d\n",a[3]);
for (i=0; i<5; ++i)
printf("%d",a[i]);
return 0;
}
----如果輸入1和2,則輸出結果爲:-----
a[0]=1
a[3]=2
1,數值,數值,2,數值
排序
求最大/最小值
倒置
查找
插入
刪除
-------------------------------------
#include <stdio.h>
int main()
{
int a[7] = {1,2,3,4,5,6,7};
int i=0,j=6,t;
while(i<j)
{
t=a[i];
a[i] = a[j];
a[j] = t;
i++; //這樣效果會不一樣
--j;
}
for(i=0;i<7;++i) //最後輸出結果可以查看
printf("%d\n",a[i]);
}
----------輸出的結果爲:7 6 5 4 3 2 1--------------------
二維數組
int a[3][4];
總共是12個元素,可以當做3行4列看待,這12個元素的名字依次是:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j] 表示第i+1行第j+1列元素
int a[m][n]; 該二維數組右下角最大位置的元素只能是a[m-1][n-1]
初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9,10,11,12},
};
輸出二維數組內容:
---------------------------------
#include<stdio.h>
int main()
{
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9,10,11,12},
};
int i,j;
for (i=0; i<3; ++i)
{
for (j=0; j<4; ++j)
printf("%-5d",a[i][j]); //這裏的-5表示格式左對齊5位一格
printf("\n");
}
return 0;
}
----------------------------------------------------------
操作
對二維數組排序
求每一行的最大值
判斷矩陣是否對稱
矩陣的相乘
多維數組
是否存在多維數組
不存在
因爲內存是線性一維的
N維數組可以當做每個元素是n-1維數組的一維數組
比如:
int a[3][4];
該數組是含有3個元素的一維數組
只不過每個元素都可以再分成4個小元素
int a[3][4][5];
該數組是含有3個元素的一維數組
只不過每個元素都是4行5列的二維數組
4.【數組】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.