1. 數(shù)組介紹
C語(yǔ)言的數(shù)組是一個(gè)同類(lèi)型數(shù)據(jù)的集合,主要用來(lái)存儲(chǔ)一堆同類(lèi)型的數(shù)據(jù)。
程序里怎么區(qū)分是數(shù)組? [ ]
這個(gè)括號(hào)是數(shù)組專(zhuān)用的符號(hào). 定義數(shù)組、 訪問(wèn)數(shù)組數(shù)據(jù)都會(huì)用到。
數(shù)組的定義語(yǔ)法:
int data[10]; <數(shù)據(jù)類(lèi)型> <數(shù)據(jù)名稱(chēng)>[常量-整數(shù)-數(shù)據(jù)數(shù)量];
定義一個(gè)int類(lèi)型的數(shù)組,數(shù)組的名稱(chēng)是data,長(zhǎng)度是10,所占空間大小:4*10 字節(jié)。
特點(diǎn):
1. 訪問(wèn)數(shù)組成員的時(shí)候:下標(biāo)是從0開(kāi)始的。int data[10]; 下標(biāo) (0~9)
2. 數(shù)組只是支持在定義的時(shí)候進(jìn)行整體賦值。
3. 數(shù)組定義的時(shí)候,[]里只能填常量。數(shù)組在定義之后就無(wú)法更改大小。
4. 數(shù)組的空間是連續(xù)的—內(nèi)存。
5. 數(shù)組的名稱(chēng)就是數(shù)組空間的首地址。
6. 數(shù)組初始化時(shí),如果沒(méi)有賦值,那么數(shù)組空間里的數(shù)據(jù)是未知的---局部變量。
7. 數(shù)組初始化時(shí),只要給一個(gè)空間賦值,剩余空間都自動(dòng)初始化為0---局部變量。
數(shù)組練習(xí)1: 定義一個(gè)數(shù)組、打印出數(shù)組里的數(shù)據(jù)
#include
int main()
{
char i;
int data[10]={12,13,14,15}; //下標(biāo)
int a[5];
for(i=0;i<10;i++) //0~9
{
printf("data[%d]=%d\n",i,data[i]);
}
for(i=0;i<5;i++) //0~4
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
數(shù)組練習(xí)2: 從鍵盤(pán)上讀取5個(gè)數(shù)據(jù)存放到數(shù)組里,在順序打印、逆序打印
#include
int main()
{
int i;
int data[5]={0}; //下標(biāo)
//從鍵盤(pán)上讀取5個(gè)數(shù)據(jù)存放到數(shù)組里
printf("請(qǐng)輸入5個(gè)數(shù)據(jù):");
for(i=0;i<5;i++)
{
scanf("%d",&data[i]); //兩種: 空格 、 回車(chē)-換行
}
for(i=0;i<5;i++)
{
printf("data[%d]=%d\n",i,data[i]);
}
for(i=4;i>=0;i--)
{
printf("data[%d]=%d\n",i,data[i]);
}
return 0;
}
2. 數(shù)組定義語(yǔ)法與注意事項(xiàng)
1. 數(shù)組的名稱(chēng)是數(shù)組元素的首地址。(數(shù)組的名字就是地址)
2. 數(shù)組只能在初始化的時(shí)候進(jìn)行整體賦值。比如: int a[100]={10,20,30};
3. 數(shù)組的下標(biāo)訪問(wèn)是從0開(kāi)始的。比如: int a[10]; 下標(biāo)范圍: a[0] ~ a[9]
4. 數(shù)組名稱(chēng)雖然是地址,但是這個(gè)地址是不能偏移、也不能自增自減,也不能改變指向。
int a[10];
int b[10];
a++、a--; //錯(cuò)誤的
a=b; //錯(cuò)誤的
a[0]=b[0]; // 正確
5. 如果數(shù)組是局部變量,初始化沒(méi)有賦值的情況下,成員是隨機(jī)值。
比如: int a[10]; printf("%d\n",a[0]);
初始化的時(shí)給數(shù)組進(jìn)行賦值,那么沒(méi)有賦值的下標(biāo)是什么值?
比如: int a[10]={1,2,3}; printf("%d\n",a[6]); //0
6. 數(shù)組定義的時(shí)候(C89), 數(shù)組的下標(biāo)里的大小只能填常量。
比如:
int a[]; //錯(cuò)誤的,定義數(shù)組必須填大小
int size=10; int a[size]; //錯(cuò)誤的,定義數(shù)組只能填常量。
int b[100]; //正確
#define SIZE 100 int a[SIZE]; //正確
3. 案例: 計(jì)算平均值
要求: 定義數(shù)組,從鍵盤(pán)上錄入5個(gè)浮點(diǎn)類(lèi)型數(shù)據(jù)存放到數(shù)組,計(jì)算平均值和最大、最小值,輸出到屏幕上。
#include
int main()
{
int i;
float sum=0;
float data[5];
float max=0;
float min=100;
printf("請(qǐng)輸入5個(gè)數(shù)據(jù):");
/*1. 輸入數(shù)據(jù)*/
for(i=0;i<5;i++)
{
scanf("%f",&data[i]);
}
/*2. 處理數(shù)據(jù)*/
for(i=0;i<5;i++)
{
sum+=data[i]; //累加
if(data[i]>max)max=data[i];
if(data[i])min=data[i];>
4. 案例: 求和
要求: 定義數(shù)組,從鍵盤(pán)上錄入5個(gè)整數(shù)數(shù)據(jù),求和,輸出結(jié)果。
#include
int main()
{
int i;
int sum=0;
int data[5];
printf("請(qǐng)輸入5個(gè)數(shù)據(jù):");
/*1. 輸入數(shù)據(jù)*/
for(i=0;i<5;i++)
{
scanf("%d",&data[i]);
}
/*2. 處理數(shù)據(jù)*/
for(i=0;i<5;i++)
{
sum+=data[i]; //累加
}
printf("和:%d\n",sum);
return 0;
}
5. 案例: 判斷數(shù)據(jù)范圍
要求: 定義數(shù)組,從鍵盤(pán)上錄入10個(gè)整數(shù)數(shù)據(jù),計(jì)算里面大于5、大于10數(shù)據(jù)的數(shù)量,輸出結(jié)果。
#include
int main()
{
int i;
int data[10];
int cnt_10=0,cnt_5=0;
printf("請(qǐng)輸入10個(gè)數(shù)據(jù):");
for(i=0;i<10;i++)
{
scanf("%d",&data[i]);
}
//處理數(shù)據(jù)
for(i=0;i<10;i++)
{
if(data[i]>5)cnt_5++;
if(data[i]>10)cnt_10++;
}
printf("cnt_5=%d\n",cnt_5);
printf("cnt_10=%d\n",cnt_10);
return 0;
}
6. 案例: 冒泡排序-整數(shù)數(shù)組
從鍵盤(pán)上錄入10個(gè)數(shù)據(jù),進(jìn)行冒泡排序. 大到小排序。
#include
int main()
{
//從鍵盤(pán)上錄入5個(gè)數(shù)據(jù),進(jìn)行冒泡排序. 大到小排序。
int a[5];
int i,j;
int tmp;
printf("錄入5個(gè)數(shù)據(jù):");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;ia[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i(a)>(a)>
7. 字符串?dāng)?shù)組
7. 字符串?dāng)?shù)組
7.1 字符串特點(diǎn)
7.1 字符串特點(diǎn)
1. 字符串本身就是字符數(shù)組。比如:char a[10]="123";
2. 常規(guī)字符串使用雙引號(hào)括起來(lái)的。 比如:char a[10]="123";
3. 字符串以'\0' 作為結(jié)束符號(hào)。
4. 字符數(shù)組一定是字符串? 不一定。 比如: char a[]={12,3,4,5,5};
7.2 字符串定義
7.2 字符串定義
#include
int main()
{
char buff1[10]={'1','2','3','\0','4','5','6','\0','7'};
char buff2[]={'1','2','3','\0'};
char buff3[]="123";
printf("%d\n",sizeof(buff2)); //4
printf("%d\n",sizeof(buff3)); //4
return 0;
}
7.3 計(jì)算字符串長(zhǎng)度
7.3 計(jì)算字符串長(zhǎng)度
#include
#include
int main()
{
char buff[100];
int cnt=0;
printf("請(qǐng)鍵盤(pán)上錄入字符串:");
scanf("%s",buff); // 不可以錄入空格
while(buff[cnt]!='\0')
{
cnt++;
}
printf("cnt=%d\n",cnt);
return 0;
}
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139758 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26302
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
C語(yǔ)言數(shù)組和指針的區(qū)別

單片機(jī)以太網(wǎng)小工具:html文件轉(zhuǎn)化為C語(yǔ)言的數(shù)組
c語(yǔ)言-數(shù)組
C語(yǔ)言數(shù)組詳解

C語(yǔ)言數(shù)組的學(xué)習(xí)教程說(shuō)明

C語(yǔ)言總結(jié)_數(shù)組全方位練習(xí)
C語(yǔ)言_數(shù)組的查找、替換、排序、拼接
C語(yǔ)言數(shù)組是什么

C語(yǔ)言數(shù)組元素的指針
C語(yǔ)言數(shù)組和指針的區(qū)別

評(píng)論