C語言學習教程第四章-數組(2)

來源:互聯網
上載者:User

數組元素的表示方法

數組元素是組成數組的基本單元。數組元素也是一種變數, 其標識方法為數組名後跟一個下標。 下標表示了元素在數組中的順序號。數組元素的一般形式為: 數組名[下標] 其中的下標只能為整型常量或整型運算式。如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。 數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。在C語言中只能逐個地使用下標變數, 而不能一次引用整個數組。 例如,輸出有10 個元素的數組必須使用迴圈語句逐個輸出各下標變數:
for(i=0; i<10; i++) printf("%d",a[i]); 而不能用一個語句輸出整個數組,下面的寫法是錯誤的: printf("%d",a);
void main()
{
int i,a[10];
for(i=0;i<10;i++)
a[i++]=2*i+1;
for(i=9;i>=0;i--)
printf("%d",a[i]);
printf("\n%d %d\n",a[5.2],a[5.8]);
}
本例中用一個迴圈語句給a數組各元素送入奇數值,然後用第二個迴圈語句從大到小輸出各個奇數。在第一個 for語句中,運算式3省略了。在下標變數中使用了運算式i++,用以修改迴圈變數。當然第二個for語句也可以這樣作, C語言允許用運算式表示下標。 程式中最後一個printf語句輸出了兩次a[5]的值, 可以看出當下標不為整數時將自動取整。數組的賦值給數組賦值的方法除了用指派陳述式對數組元素逐個賦值外, 還可採用初始化賦值和動態賦值的方法。數組初始化賦值數組初始化賦值是指在數組說明時給數組元素賦予初值。 數組初始化是在編譯階段進行的。這樣將減少已耗用時間,提高效率。

初始化賦值的一般形式為: static 類型說明符 數組名[常量運算式]={值,值……值}; 其中static表示是靜態儲存類型, C語言規定只有靜態儲存數組和外部儲存數組才可作初始化賦值(有關靜態儲存,外部儲存的概念在第五章中介紹)。在{ }中的各資料值即為各元素的初值, 各值之間用逗號間隔。例如: static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當於a[0]=0;a[1]=1...a[9]=9;

C語言對數組的初始賦值還有以下幾點規定:
1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如: static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數組整體賦值。 例如給十個元素全部賦1值,只能寫為: static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為: static int a[10]=1;
3.如不給可初始化的數組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如: static int a[5]={1,2,3,4,5};可寫為: static int a[]={1,2,3,4,5};動態賦值可以在程式執行過程中,對數組作動態賦值。 這時可用迴圈語句配合scanf函數逐個對數組元素賦值。
void main()
{
int i,max,a[10];
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max) max=a[i];
printf("maxmum=%d\n",max);
}
本常式序中第一個for語句逐個輸入10個數到數組a中。 然後把a[0]送入max中。在第二個for語句中,從a[1]到a[9]逐個與max中的內容比較,若比max的值大,則把該下標變數送入max中,因此max總是在已比較過的下標變數中為最大者。比較結束,輸出max的值。
void main()
{
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}
本常式序中用了兩個並列的for迴圈語句,在第二個for 語句中又嵌套了一個迴圈語句。第一個for語句用於輸入10個元素的初值。第二個for語句用於排序。本程式的排序採用逐個比較的方法進行。在i次迴圈時,把第一個元素的下標i賦於p,而把該下標變數值a[i]賦於q。然後進入小迴圈,從a[i+1]起到最後一個元素止逐個與a[i]作比較,有比a[i]大者則將其下標送p,元素值送q。 一次迴圈結束後,p即為最大元素的下標,q則為該元素值。若此時i≠p,說明p,q值均已不是進入小迴圈之前所賦之值,則交換a[i]和a[p]之值。 此時a[i]為已排序完畢的元素。輸出該值之後轉入下一次迴圈。對i+1以後各個元素排序。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.