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指標 由離其最近...