一 、數組是什麼?
1.數組就是用來存儲一組數據的,用來描述同一類性質的數據
2.一維數組:是數組中最簡單的,它的元素只需要用數組名加一個下標就能唯一地確定
3.二維數組:二維數組是一個特殊的一維數組:它的元素是一維數組
4.字符數組:用來存放字符數據的數組
二 、數組有什麼用?
1.管理同名同屬性的數據,同時反映這些數據內在關係
三 、數組怎麼用?
1.定義和引用一維數組
定義:元素類型 數組名[元素個數];
比如:int ages[3];
ages[0]=1;//引用
2.定義和引用二維數組
定義:元素類型 數組名[元素個數][元素個數];
比如:int ages[3][2];
ages[0][0]=1;//引用
四 、使用數組要注意什麼?
1.數組名的命名規則和變量名相同,遵循標識符命名規則
2.在定義數組時,需要指定數組中元素的個數,方括號中的常量表達式用來表示元素的個數,即數組長度
3.常量表達式中可以包括常量和符合常量如“int a[3+5]”是合法的。
4.C語言不允許對數組的大小作動態定義
5.只能存放一種類型的數據,比如int類型的數組、float類型的數組
6.裏面存放的數據稱爲“元素”
五 、數組代碼舉例
- 例1 一維數組:處理斐波那契數列問題
#include<stdio.h>
int main(){
int i;
int f[20]={1,1};//對最前面兩個元素f[0]和f[1]初始化爲1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];//先後求出f[2]~f[19]的值
for(i=0;i<20;i++)
{
if(i%5==0) printf("\n");//控制每輸出5個數後換行
printf("%12d",f[i]);//遍歷輸出
}
printf("\n");
return 0;
}
- 例2 二維數組:將一個二維數組行和列的元素互換,存到另一個二維數組中
#include<stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("數組a:\n");
for(i=0;i<=1;i++)//處理a數組中的一行中各元素
{
for(j=0;j<=2;j++)//處理a數組中某一列元素
{
printf("%5d",a[i][j]);//輸出a數組各元素
b[j][i]=a[i][j];//將a數組元素的值賦給b數組相應元素
}
printf("\n");
}
printf("數組 b:\n");//輸出b數組各元素
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
- 例3 字符數組:輸入一行字符,統計其中有多少個單詞,單詞之間用空格分隔開
#include<stdio.h>
int main(){
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)//輸入一個字符串給字符數組string
if(c==' ') word=0;//只要字符不是‘\0’就繼續執行循環
else if(word==0){//如果不是空格字符且word原值爲0
word=1;//是word置1
num++;//num 累加1,表示增加一個單詞
}
printf("這行一共有%d個單詞. \n" ,num);//輸出單詞數
return 0;
}
六 、數組總結
主題 1:利用數組批量處理數據
1.數組和循環的結合 2.數組的定義 2.1一維數組:類型符 數組名[常量表達式] 2.2定義是爲了通知計算機爲其劃分相應的內存 3.數組元素的引用 3.1表示形式:數組名[下標] 4.一維數組的初始化 如果在定義數值型數組時,指定了數組的長度並對之初始化,凡未被“初始化列表”指定初始化的數組元素,系統會自動把它們初始化爲0 (如果是字符型數組,則初始化爲‘\0’,如果是指針型數組,則初始化爲null,即空指針)
主題 2:怎麼定義和引用二維數組
1.定義的一般形式 類型說明符 數組名[常量表達式][常量表達式] 2.float a[3][4] 相當於 flaot a[0][4], a[1][4], a[2][4];a[0],a[1],a[2]可以看做數組名 3.C語言中,二維數組中元素排列的順序是按行存放的 4.二維數組的引用 4.1表示形式:數組名[下標][下標] 5.字符型數據是以字符的ASCII代碼存儲在存儲單元中的,一般佔一個字節。 由於ASCII也屬於整數形式,因此在C99標準中,把字符類型歸納爲整型類型中的一種 6.C語言中沒有字符串類型,字符串是存放在字符型數組中的 7.怎麼定義字符數組同上 8.由5知可以用整型數組存放字符數據 9.如果在定義字符數組時不進行初始化,則數組中各元素的值是不可預料的 10.C系統在用字符數組想內存中存儲字符串常量時會自動加一個空操作符‘\0’作爲結束符。 這樣在輸出一個字符時,會檢查是否爲結束符,以此判斷停止輸出 11.除了用常規方法對數組進行初始化,還可以用字符串常量來進行初始化 12.一個字符佔一個字節。字符數組的長度指的是:所有字符所佔的字節數,包括結束字符 13.字符數組的輸出 13.1逐個字符輸入輸出 :%c 13.2輸出整個字符串:%s,此時輸出項應該是字符數組名,而不是數組元素 13.3scanf("%s",c);//向一個已定義的數組c中 輸入一個字符串 回車結束 13.4scanf("%s%s",c1,c2);//向已定義的數組c1,c2中 輸入多個字符串 以空格字符分隔 回車結束 14.在C語言中數組名代表數組的起始地址 15.字符串處理函數 15.1puts(數組名) 輸出字符串的函數 15.2gets(數組名) 輸入字符串的函數 15.3strcat(數組名1,數組名2)字符串連接函數 15.4strcpy(數組名1,數組名2)字符串的複製函數 15.5strncpy(數組名1,數組名2,2)將數組2中最前面2個字符複製到數組1中,取代數組1中原有的最前面2個字符 15.6strmp(數組名1,數組名2)返回0相等 負值是小於 正值是大於 15.7strlen(數組名1)測字符串長度的函數,不包括結束符。 15.8的執行:首先按照字符數組名c找到其數組起始地址,然後逐個輸出其中的字符,直到遇到‘\0'爲止 16.使用字符串處理函數,要將其響應的庫函數包含進來;即#include<string.h>