一 使用數組的目的:可讓多個數據使用一個變量,用不一樣的下標加以區分;數組
數組的須要先定義後使用,int a[10];//定義了一個長度爲10,存放int型數據的數組;如下定義是錯誤的:ide
int a[a+1];//不能有表達式spa
int b[n];//不能有字母排序
int n=10;內存
int a[n];//錯誤,有字母it
總結:[ ]中的值只能是正整數class
二 數組的引用:經過下標引用變量
int a[10];這十個元素分門別爲a[0]至a[9];引用時注意不要下標越界;這十個數在內存中連續存放遍歷
三 數組的賦值:數組的賦值須要在未定義完時候進行,如 int a[10]={1,2,4};不能夠寫成 :引用
int a[10];
a[10]={1,2};
int a[10]={1,2};//不徹底賦值,a[0]到a[1]值分別爲1,2,其他均爲0(注意不是垃圾數據);
定義數組不聲明數組個數的時候必須賦初值,數組個數取決於初值個數;
int a[]={1,1,1};//數組個數爲3
四 數組的遍歷使用for語句;
數據在數組中存儲的三個特色:
1.從0開始;
2.連續存放;
3.上述兩個特色必須動態知足(不論刪除數據仍是增長數據);
五 對於數組的輸入,插入,刪除,求均值,排序的講解:
編寫程序,對若干名同窗成績進行處理,包括輸入成績,刪除成績,插入成績,求平均值,按升序排序:
輸入成績:由於輸入學生不定,因此不能提早預知輸入的個數,因此咱們規定當輸入爲 -1 時候結束輸入
程序代碼:
printf("請輸入數據(當輸入-1時候結束):\n");
scanf("%d", &num);
for(i=0;i!=num;i++)
{
score[i]=num;
printf("請輸入數據(當輸入-1時候結束):\n");
scanf("%d", &num);
}
插入成績:插入成績分兩步完成 第一步是查找 第二步插入(找到原有成績,並將新成績插到原有成績以前)
1.查找的第一步是找到原有成績,第二步是找到其下標i,第三步是輸入要插入的成績
2.插入採用前插法,具體查找的過程:
已知:插入成績 newScore
數組的有效元素:count
插入點下標: j
插入成績的 僞代碼:
for(i=count;i>j;i--)
{
score[i]=score[i-1];
}
score[i]=newScore;
count;
將倒數第二賦值給倒數第一,將倒數第三賦值給倒數第二,找到將原有插入點下標的數據賦值給後一位,留下的空位由插入點數據補充;
3.查找的目的是找到舊成績的下標
僞代碼:
for(i=0;i<count&&score[i]!=oldScore;i++)
;
if(i>count)
printf("插入錯誤");
else
;//真正插入的代碼
刪除成績:
1.輸入要刪除的成績
2.找到這個成績(從頭依次查找)
3.刪除這個成績(將以後的成績依次提早一位)
僞代碼以下
printf("請輸入刪除的成績:\n");
scanf("%d" , &delescore);
for(i = 0; i<count&&score[i]! = delescore;i++)
;
if(i>count)
printf("未有要刪除的成績\n");
else
{
for(;i<count-1;i++)
{
score[i]=score[i+1];
}
}
求和:相加除以人數便可:
按升序排序:將一堆混亂的數據重新有小到大排序
for(i = 0;i < count ;i++)//控制放置最小的數字
for(j = i+1;j < count ;j++)
{
if(score[i] >score[j])//將小的放前面
{
num = score[j];
score[j] =score[i];
score[i] = num;
}
}