數組作爲函數參數

  1. //  數組元素作函數實參  
  2.  
  3. 在用數組元素作函數實參時,把實參的值傳給形參,是"值傳遞"方式。  
  4. 數據傳遞的方向是 從實參傳到形參,單向傳遞。  
  5.  
  6. 輸入10個數,要求輸出其中值最大的元素和該數是第幾個數。  
  7. #include "stdafx.h"  
  8.  
  9.  
  10. int _tmain(int argc, _TCHAR* argv[])  
  11. {  
  12.     int max(int x,int y);  
  13.     int a[10],m,n,i;  
  14.     printf("enter 10 integer numbers:");  
  15.     for(i=0;i<10;i++)  
  16.         scanf_s("%d",&a[i]);  
  17.     printf("\n");  
  18.     for(i=1,m=a[0],n=0;i<10;i++)  
  19.     {  
  20.         if(max(m,a[i])>m)  
  21.         {m=max(m,a[i]);  
  22.         n=i;  
  23.         }  
  24.     }  
  25.     printf("The largest number is %d\nit is the %dth number.\n",m,n+1);  
  26. }  
  27.  
  28. int max(int x,int y)  
  29. {  
  30.     return(x>y?x:y);  
  31. }  
  32.  
  33. //  數組名作函數參數  
  34.  
  35. 用數組元素作實參時,向形參變量傳遞的是數組元素的值,而用數組名作函數實參時,  
  36. 向形參(數據名或指針變量)傳遞的是數組首元素的地址。  
  37.  
  38. 有一個一維數組 score,內放10個學生成績,求平均成績。  
  39. #include "stdafx.h"  
  40.  
  41.  
  42. int _tmain(int argc, _TCHAR* argv[])  
  43. {  
  44.     float average(float array[10]);  
  45.     float score[10],aver;  
  46.     int i;  
  47.     printf("input 10 scores:\n");  
  48.     for(i=0;i<10;i++)  
  49.         scanf_s("%f",&score[i]);  
  50.     printf("\n");  
  51.     aver=average(score);  
  52.     printf("average score is %5.2f\n",aver);  
  53.     return 0;  
  54. }  
  55.  
  56. float average(float array[10])  
  57. {  
  58.     int i;  
  59.     float aver,sum=array[0];  
  60.     for(i=1;i<10;i++)  
  61.         sum=sum+array[i];  
  62.     aver=sum/10;  
  63.     return(aver);  
  64. }  
  65.  
  66. 有兩個班級,分別有35名和30名學生,調用一個average函數,分別求着兩個班的學生的平均成績。  
  67. #include "stdafx.h"  
  68.  
  69.  
  70. int _tmain(int argc, _TCHAR* argv[])  
  71. {  
  72.     float average(float array[ ],int n);  
  73.     float scorel[5]={98.5,97,91.5,60,55};  
  74.     float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};  
  75.     printf("The average of class A is %6.2f\n",average(scorel,5));  
  76.     printf("The average of class B is %6.2f\n",average(score2,10));  
  77.     return 0;  
  78. }  
  79.  
  80. float average(float array[ ],int n)  
  81. {  
  82.     int i;  
  83.     float aver,sum=array[0];  
  84.     for(i=1;i<n;i++)  
  85.         sum=sum+array[i];  
  86.     aver=sum/n;  
  87.     return(aver);  
  88. }  
  89.  
  90. 用選擇法對數組中10個整數按由小到大排序。  
  91. #include "stdafx.h"  
  92.  
  93.  
  94. int _tmain(int argc, _TCHAR* argv[])  
  95. {  
  96.     void sort(int array[ ],int n);  
  97.     int a[10],i;  
  98.     printf("enter array:\n");  
  99.     for(i=0;i<10;i++)  
  100.         scanf_s("%d",&a[i]);  
  101.     sort(a,10);  
  102.     printf("The sorted array:\n");  
  103.     for(i=0;i<10;i++)  
  104.         printf("%d ",a[i]);  
  105.     printf("\n");  
  106.     return 0;  
  107. }  
  108.  
  109. void sort(int array[ ],int n)  
  110. {  
  111.     int i,j,k,t;  
  112.     for(i=0;i<n-1;i++)  
  113.     {k=i;  
  114.     for(j=i+1;j<n;j++)  
  115.         if(array[j]<array[k])  
  116.             k=j;  
  117.     t=array[k];array[k]=array[i];array[i]=t;  
  118.     }  
  119. }  
  120.  
  121. //  多維數組名作函數參數  
  122. 有一個3*4的矩陣,求所有元素中的最大值。  
  123. #include "stdafx.h"  
  124.  
  125.  
  126. int _tmain(int argc, _TCHAR* argv[])  
  127. {  
  128.     int max_value(int array[][4]);  
  129.     int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};  
  130.     printf("Max value is %d\n",max_value(a));  
  131.     return 0;  
  132. }  
  133.  
  134. int max_value(int array[][4])  
  135. {  
  136.     int i,j,max;  
  137.     max=array[0][0];  
  138.     for(i=0;i<3;i++)  
  139.         for(j=0;j<4;j++)  
  140.             if(array[i][j]>max)  
  141.                 max=array[i][j];  
  142.     return(max);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章