1. 程式人生 > >四。陣列課程筆記

四。陣列課程筆記

陣列課程筆記:
一。知識點彙總:
1.在C語言中, 陣列【i】 屬於構造資料型別。一個數組可以分解為多個數組元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列、字元陣列、指標陣列、結構陣列等各種類別。
2.陣列說明的一般形式為:型別說明符 陣列名 [常量表達式],……; 其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表達式表示資料元素的個數,也稱為陣列的長度。
陣列就是一次性定義相同資料型別的一組變數陣列定義。
舉例
int a[10]; 說明整型陣列a,有10個元素。若要表示第10個元素,則使用a[9]。第一個則是a[0]。
float b[10],c[20]; 說明實型陣列b,有10個元素,實型陣列c,有20個元素。
char ch[20]; 說明字元陣列ch,有20個元素。
3.二維陣列:用來表示矩陣,如5行5列的矩陣為a【5】【5】,i行j列的矩陣為b【i】【j】。
二維陣列在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在陣列中的位置也處於一個平面之中, 而不是象一維陣列只是一個向量。但是,實際的硬體儲存器卻是連續編址的, 也就是說儲存器單元是按一維線性排列的。如何在一維儲存器中存放二維陣列,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維陣列是按行排列的。
4.字元陣列:
字元陣列
用來存放字元量的陣列稱為字元陣列。
字元陣列型別說明的形式與前面介紹的數值陣列相同。例如:char c[10]; 由於字元型和整型通用,也可以定義為int c[10]但這時每個陣列元素佔2個位元組的記憶體單元。
字元陣列也可以是二維或多維陣列,例如:char c[5][10];即為二維字元陣列。
字元陣列也允許在型別說明時作初始化賦值。例如:static char c[10]={c

,,p,r,o,g,r,a,m};賦值後各元素的值為:陣列C c[0]c[1]c[2]c[3]c[4]c [5]c[6]c[7]c[8]c[9]其中c[9]未賦值,由系統自動賦予0值。 當對全體元素賦初值時也可以省去長度說明。例如:static char c[]={c, ,p,r,o,g,r,a,m`};這時C陣列的長度自動定為9。
int main()
{
int i,j;
char a【】[5]={{‘B’,‘A’,‘S’,‘I’,‘C’,},{‘d’,‘B’,‘A’,‘S’,‘E’}};
for(i=0;i<=1;i++)
{
for(j=0;j<=4;j++)
printf("%c",a[j]);
printf("\n");
}
二.能夠解決的問題:
陣列能夠解決許多有規律可循的數學問題,如:尋找配對數:
#include
using namespace std;
int main()
{int n,i,q,w,e,r=0;
cin>>n;
int a[1001];
for(i=1;i<=n;i++)
cin>>a[i];
for(q=1;q<=n;q++)
for(w=q+1;w<=n;w++)
for(e=w+1;e<=n;e++)
if(a[q]*a[w]==a[e]||a[w]*a[e]==a[q]||a[q]*a[e]==a[w])
r=r+1;
cout<<r;
}
以及許多多維上的數學問題,如:矩陣交換行:

#include
using namespace std;
int main()
{
int a[5][5], m, n, i, j;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
cin >> a[i][j];
cin >> m >> n;
for (j=0; j<5; j++){
i = a[m-1][j];
a[m-1][j] = a[n-1][j];
a[n-1][j] = i;
}
for (i=0; i<5; i++){
for (j=0; j<5; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
三、自己的感想:
陣列前面的題還能做出來,但到後面越來越難以思考,許多次思路與正確答案差了很多,自己到現在還沒有找到陣列的規律,導致程式碼的編寫越來越困難。剩下的題目多為字串,在字串的使用上,我還沒有了解,必須在19周前儘快解決。
否則很有可能造成嚴重後果。