<address id="9d9v3"></address>
        <form id="9d9v3"></form><listing id="9d9v3"><nobr id="9d9v3"><progress id="9d9v3"></progress></nobr></listing>
          <noframes id="9d9v3"><form id="9d9v3"></form>

          <address id="9d9v3"></address>

          <span id="9d9v3"><nobr id="9d9v3"><meter id="9d9v3"></meter></nobr></span>
          <address id="9d9v3"></address>
          <form id="9d9v3"><nobr id="9d9v3"></nobr></form>

          直播帶貨服務

          一維數組的初始化

          一維數組初始化

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

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

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

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

          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
          真正国产乱子伦高清对白