C語言知識點4 陣列

2021-10-02 09:43:41 字數 4585 閱讀 6074

1、同一陣列中,資料的資料型別必須相同。

2、定義: 型別說明符 陣列名[整型常量表示式] 例: int a[4];

3、陣列(array)也是一種資料型別,屬於構造資料型別,也稱作「匯出型別」。其他基本資料型別有:int、float、double、char。

4、陣列名代表陣列在記憶體中的首位址,是乙個位址常量;一般不使用變數定義陣列的長度,即便該變數已經定義且有初值也不允許;陣列後面中的常量表示式表示陣列的個數,型別應當為整型(為了方便修改,可使用巨集定義);

1、格式: 陣列名[下標] 例:a[3];

2、下標是元素距離首位置的偏移量;在使用陣列元素的過程中,下標可以是常量、常量表示式、變數、變數表示式,甚至還可以是另外乙個陣列元素。

//利用迴圈在執行時輸入陣列元素的值

int a[5]

,i;for

(i=0

;i<

5;i++

)for

(i=0

;i<

5;i++

)return

0;

1、格式: 型別說明符 陣列名[整型常量表示式]=

​ 例:int a[5]=;

2、全部賦值,在這種情況下,甚至不用寫清陣列元素的個數:

​ int a = ;

3、部分賦值,未賦值的元素會自動賦值為0,陣列元素的個數不能省略:

​ int a [15] = ;

​ 其中a [5]到a[14]的值全部為0;

1、排序:氣泡排序法。總比較次數為 (n-1)+(n-2)+…+2+1=n*(n-1)/2.

//輸入10位同學的成績,按一定順序排列

int score[10]

,i,j,t;

printf

("請輸入10名同學的成績,使用空格隔開。\n");

for(i=

0;i<

10;i++

)printf

("\n");

for(i=

0;i<

10;i++)}

}for

(i=0

;i<

10;i++

)return

0;

2、插入

​ 在定義陣列的時候將空間適當寫大些,之後將插入的資料進行比較,將要插入的位置之後依次往後挪動。

int score[11]

,i,j,t;

printf

("請輸入10名同學的成績,使用空格隔開。\n");

for(i=

0;i<

10;i++

)printf

("\n");

//對輸入的資料進行排序

for(i=

0;i<

10;i++)}

}for

(i=0

;i<

10;i++

)//插入要輸入的資料並進行排序

printf

("\n請輸入要插入的資料: ");

scanf

("%d"

,&t)

;for

(i=0

;i<

10;i++

) score[i]

=t;break;}

}//對資料進行輸出

for(i=

0;i<=

10;i++

)return

0;

3、刪除

刪除特定的資料後,保證刪除後的順序不變。

int x=

5,i,del=

0,j;

int a[10]

=;for(i=

0;i<

10;i++

)putchar

('\n');

for(i=

0;i<

10-del;i++

) i--

; del+=1

;}}for

(i=0

;i<

10-del;i++

)return

0;

​ 格式: 型別說明符 陣列名[常量表示式1] [常量表示式2] 例:int a[2][3]

​ 引用: 陣列名[行下標] [列下標]

​ 二維陣列中,有乙個m行n列的二維 陣列,其中第i行第j列元素在陣列中的位置公式為: i*n+j+1

​ c語言中,二維陣列元素可用它相對組首元素a[0] [0] 的偏移量來表示,那麼,二維陣列a[m] [n]中的陣列元素a[i] [j]可以表示為: a[i] [j]<==>a[0] [n*i+j]

​ 按行初始化:a[2] [3] =,};

​ 按列初始化:a[2] [3] = ;

初始化時,沒有給初始值的元素值為0;可省略第一維多的大小,但不能省略第二維的大小。(a[ ] [3])

對陣列元素輸出操作:

//二維陣列的輸出操作

int i,j;

int a[2]

[3]=

;//採用迴圈操作,分別用兩個下標來標識

for(i=

0;i<

2;i++)}

printf

("\n");

//採用迴圈操作,用相對於a[0][0]的偏移量來標識

for(i=

0;i<

2;i++)}

printf

("\n");

//利用一層迴圈,同樣是用相對於a[0][0]位置的偏移量來標識

for(i=

0;i<

6;i++

)printf

("\n"

);

​ 使用sizeof(a)/sizeof(a[0]) 可以得到二維陣列的行數;

​ 使用sizeof(a[0])/sizeof(int) 可得到二維陣列的列數。

使用%c 格式符

int name[10]

,i;for

(i=0

;i<

10;i++

)

使用 getchar() / putchar() 函式
int name[10]

,i;for

(i=0

;i<

10;i++

)for

(i=0

;i<

10;i++

)

​ 這兩種方式輸入的字元陣列中沒有字串結束符 『\0』。如果想要陣列中包括字串結束符』\0』,只能通過賦值語句賦值。

使用%s 格式符

char name[20]

;scanf

("%s"

,name)

;printf

("%s"

,name)

;

​ 注意點:

​ 1、陣列名是位址常量,因此scanf函式輸入時不需要加位址符 『&』,直接寫陣列名即可。

​ 2、scanf 函式是以空格、製表符、換行符和檔案結束符eof作為輸入的結束標誌,因此,用%s格式符輸入時不能包括這些字元。

​ 3、使用%s 格式符輸出時,系統是從指定位置開始,直到 『\0』 結束,不會自動換行。

使用gets()/puts() 函式

格式:gets(字元陣列名)

​ puts(字元陣列名)

char name[20]

;gets

(name)

;puts

(name)

;

注意點:

​ gets()函式是以換行符或者檔案結束符作為輸入的結束標誌。所以能輸入含有空格的字串。系統會自動將換行符轉換為』 \0 '。但是對於字元陣列中未得到賦值的元素值仍是不確定的。

1、strlen函式(測量):

​ strlen(str) .由函式返回值返回字串的實際長度,即不包括 '\0 '在內的實際字元的個數。

2、strcat函式(連線):

​ strcat(str1,str2). 將字串str2連線到字串str1的末尾,將連線到的結果放在字串陣列str1中,str2的值 不變,函式值返回str1的首位址。

​ str1應定義的足夠大些,str1末尾的 '\0』被str2的第乙個字元代替,str2中的 『\0』保留。

3、strcopy函式(賦值):

​ strcopy(str1,str2) . 將字串2中的字串複製到字串1中,str2不變,結果放在str1中,函式值返回str1的首位址。

​ str1 只能是字串陣列名,str1的長度應大於等於str2,str2中的 '\0『也會複製到str1中,完成覆蓋。字串之間的賦值只能使用strcopy()函式,不能使用等號。

4、strcmp函式(比較):

​ strcmp(str1,str2). 比較str1和str2中字串的大小。相等返回0,小於返回值小於0,大於返回值大於0.

5、strlwr、strupr函式**換):

​ strlwr(str),將字串所有英文本母轉換為小寫。

​ strupr(str),將字串所有英文本母轉換為大寫。

C語言知識點4

第八節 字元 1 字元資料的合法形式 1 是字元佔乙個位元組,1 是字串佔兩個位元組 含有乙個結束符號 0 的ascii數值表示為48,a 的ascii數值是97,a 的ascii數值是65。一般考試表示單個字元錯誤的形式 65 1 字元是可以進行算術運算的,記住 0 0 48 大寫字母和小寫字母轉...

C語言知識點 4

1.鏈結,是把專案中所有相關聯的.o目標檔案跟c語言函式庫合併在一起,生成乙個可執行檔案 2.p walk 代表給p所指向的物件傳送一條walk訊息 3.成員變數是每個物件都有乙份,而方法是物件共用乙份 4.類的實現地方是寫方法的實現的,類的方法中,小括號只用來括住型別 5.在函式中建立的物件,函式...

C語言陣列知識點

指標陣列 陣列指標 指標陣列 指標陣列是陣列,是乙個存放指標的陣列。例 int arr 5 陣列指標 是有能力指向陣列的指標。例 int p 5 p 先和 結合,說明p是乙個指標變數,然後指標指向的是乙個大小為10個整型的陣列。所以p是乙個指標,指向乙個陣列,叫陣列指標。分辨陣列or指標 由離其最近...