<ruby id="tfdtx"><mark id="tfdtx"></mark></ruby>

<address id="tfdtx"><nobr id="tfdtx"><progress id="tfdtx"></progress></nobr></address>

<noframes id="tfdtx">
<form id="tfdtx"></form>

<form id="tfdtx"></form>

<sub id="tfdtx"></sub>

直播帶貨服務

一維數組的初始化

一維數組初始化

數組賦值的方法除了用賦值語句對數組元素逐個賦值外, 還可采用初始化賦值和動態賦值的方法。數組初始化賦值是指在數組定義時給數組元素賦予初值。數組初始化是在編譯階段進行的。這樣將減少運行時間,提高效率。

一維數組初始化賦值的一般形式為:

數組類型數組名[常量表達式] = {,……};

其中在{}中的各數據值即為各元素的初值,各值之間用逗號間隔。

int a[5]={1,2,3,4,5};

這樣數組a中的元素a[0]=1;a[1]=2;a[2]=3;a[3]=4; a[4]=5;a中5個元素全部賦初值,則在數組說明中,可以不給出數組元素的個數。

可寫為:

int a[]={1,2,3,4,5};

注意:

(1)可以只給部分元素賦初值。當{ }中值的個數少于元素個數時,只給前面部分元素賦值。

(2)只能給元素逐個賦值,不能給數組整體賦值。

例如:

int a[5]={1,2,3};

這表示只給a[0]~a[2]3個元素賦值,而后2個元素自動賦0值。

除了定義數組時同時初始化,也可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。

一維數組的初始化

例如:

例如:

int i,a[5];

for(i=0;i<5;i++)

scanf("%d",&a[i]);

【例5-3】輸入10個數字,求出最大值和它的下標。

程序的算法流程圖如圖5-3所示。

一維數組的初始化

5-3算法流程圖

根據流程圖寫出的程序如下:

#include <stdio.h>

int main()

int i,max,a[10],p=0; 

printf("input 10 numbers:\n"); 

for(i=0;i<10;i++) 

scanf("%d",&a[i]);   /*數組a中輸入元素*/

max=a[0]; /*最大值元素賦初值*/

for(i=1;i<10;i++) 

{

if(a[i]>max) /*訪問的第i個元素是否大于當前最大值*/

{

max=a[i]; 

p=i;

    }

}

printf("maxmum=%d,index=%d\n",max,p);

return 0; 

}

程序運行結果:

input 10 numbers:

23 45 -2 0 9 13 4 65 10 3↙

maxnum=65,index=7

【例5-4】輸入10個數字,采用交換法逆序輸出

分析:將一個數組逆序轉換,假如數組存放為1,2,3,4,5,6,7,8,9,10變為10,9,8,7,6,5,4,3, 2,1。對于某一個元素a[i],則前面已有i個元素,與它交換的元素a[k]應該滿足與a[k]后面也有i個元素,則這個元素的下標k為:n-1-i,即下標i要與下標n-i-1交換,如圖5-4所示。

a[0]

a[1]

a[2]

a[10-2-1]

a[10-1-1]

a[10-0-1]         一維數組的初始化  

圖5-4 元素的交換

也就是說,10個數字的話,兩兩交換需要交換5次,那么N個數據,需要交換N/2次。利用循環實現數組中元素的交換。

#include <stdio.h>

#define N 10

int main()

     int i,temp,a[N]; 

     printf("input 10 numbers:\n"); 

     for(i=0;i<N;i++) 

    scanf("%d",&a[i]);   /*數組a中輸入元素*/

     for(i=0;i<N/2;i++) /*元素交換*/

     {

     temp=a[i];

     a[i]=a[N-i-1];

     a[N-i-1]=temp;

     }

     printf(”Inverted sequence is:\n”);

     for(i=0;i<N;i++)

     printf(“%4d”,a[i]);

     return 0; 

}

程序運行結果:

input 10 numbers:

1 2 3 4 5 6 7 8 9 10↙

Inverted sequence is:

10 9 8 7 6 5 4 3 2 1

【例5-5】輸入10個數字并按從大到小的順序排列。

程序的算法流程圖如圖5-5所示。

根據流程圖寫出的程序如下:

#include <stdio.h>

int main()

int i,j,p,q,s,a[10]; 

printf("input 10 numbers:\n"); 

for(i=0;i<10;i++) 

scanf("%d",&a[i]); /*數組a中輸入元素*/

 printf(“Inverted sequence is:\n”);

for(i=0;i<10;i++)  /*采用逐個比較的方法進行排序*/

p=i;q=a[i]; /*在i次循環時,把第一個元素的下標i賦于p,而把變量值a[i]賦于q*/

for(j=i+1;j<10;j++)/*從a[i+1]起到最后一個元素止逐個與a[i]作比較*/

if(q<a[j])/*有比a[i]大者則將其下標賦值給p,元素值賦值給q*/

p=j;q=a[j]; 

if(i!=p)/*i≠p,p,q值均已不是進入第二層循環之前所賦之值,則交換a[i]和a[p]之值*/

s=a[i]; 

a[i]=a[p]; 

a[p]=s; 

printf("%5d",a[i]); 

return 0; 

}

程序運行結果:

input 10 numbers:

23 90 -45 0 5 124 -3 34 87 100↙

Inverted sequence is:

124 100 90  87  34  23   5   0  -3   -45

 一維數組的初始化

例5-5算法流程圖

通過上面的程序可以看出,數組的最大優點就是:下標可以是變量甚至是表達式,從而給訪問和操作一組變量帶來了極大的方便。


© Copyright 六六互聯.Some Rights Reserved.www.ic.vip
三级在线看中文字幕完整版