C语言 7.5 数组作为函数参数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
j
例 求二维数组中各行元素之和 get_sum_row(int x[][3], int result[] ,int row, int col) { int i,j; for(i=0;i<row;i++) { result[i]=0; a for(j=0;j<col;j++) 18 x 3 6 9 result[i]+=x[i][j]; 12 1 4 7 } } main() { int a[2][3]={3,6,9,1,4,7}; int sum_row[2],row=2,col=3,i; get_sum_row(a,sum_row,row,col); for(i=0;i<row;i++) printf("The sum of row[%d]=%d\n",i+1,sum_row[i]); }
68 76 88 99
Ch7_13.c
0 1 2 3 4 5 6 7 8 9
例 求二维数组中最大元素值
Ch7_14.c
j j int max_value(int array[3][4]) { int i,j,k,max; 1 3 5 7 1 3 5 7 i 1 3 5 7 i i 多维形参数组第一维维数 max=array[0][0]; 可省略,第二维必须相同 4 2 6 8 4 6 8 2 4 for(i=0;i<3;i++)2 6 8 int array[][4] for(j=0;j<4;j++) 17 34 12 15 17 34 12 15 15 17 34 12 if(array[i][j]>max) max=5 max=3 max=1 j max=array[i][j]; j j return(max); 1 3 } 5 7 i 1 3 5 7 1 3 5 7 2 4 main()8 6 i 2 4 6 8 2 4 6 8 { int a[3][4]={{1,3,5,7}, i 15 17 34 12 15 17 34 12 {2,4,6,8},{15,17,34,12}};15 17 34 12 max=7 max=7 max=34 printf("max value is %d\n",max_value(a)); }
0 1 2Biblioteka Baidu12 23 56 …. …. 88
stu
9
例 数组元素与 数组名 作函数参数比较
Ch7_111.c
值传递
#include <stdio.h> void swap2(int x,int y) { int z; z=x; x=y; y=z; } main() { int a[2]={1,2}; swap2(a[0],a[1]); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
27 13 76 88 6 7 8 9
Ch7_13.c
k j j j j j j j j j
k k
main() 例 数组排序----简单选择排序 { int a[10],i; for(i=0;i<10;i++) void sort(int array[],int n) scanf("%d",&a[i]); { int i,j,k,t; sort(a,10); for(i=0;i<n-1;i++) for(i=0;i<10;i++) { k=i; printf("%d ",a[i]); for(j=i+1;j<n;j++) printf("\n"); if(array[j]<array[k]) k=j; } if(k!=i) a { t=array[i]; 49 0 9 array array[i]=array[k]; 68 13 1 k 57 2 array[k]=t; j i=1 32 3 } j 9 49 4 j } 99 5 j }
result sum_row
Ch7_30.c
1 2 调用 x 1 2 y x 2 1 y 交换 a 1 2 返回
a a[0] a[1]
1 2 调用前
a a[0] a[1]
#include <stdio.h> 例 数组元素与 数组名 void swap2(int x[]) 作函数参数比较 { int z; z=x[0]; x[0]=x[1]; x[1]=z; Ch7_110.c } main() 地址传递 { int a[2]={1,2}; swap2(a); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); }
实参用数组名 . .
Ch7_100.c Ch7_101.c
int stu[ ]
float average(int stu[10], int n) { int i; float av,total=0; for( i=0; i<n; i++ ) total += stu[i]; av = total/n; return av; } score
a 1 2 调用前 a x 1 2 调用 a x a 2 1 交换 2 1 返回
main() 例 数组排序----简单选择排序 { int a[10],i; for(i=0;i<10;i++) void sort(int array[],int n) scanf("%d",&a[i]); { int i,j,k,t; sort(a,10); for(i=0;i<n-1;i++) for(i=0;i<10;i++) { k=i; printf("%d ",a[i]); for(j=i+1;j<n;j++) printf("\n"); if(array[j]<array[k]) k=j; } if(k!=i) a { t=array[i]; 49 0 9 array array[i]=array[k]; 68 1 57 2 array[k]=t; i=0 32 3 } 9 49 4 } 99 5 }
27 13 68 76 88 6 7 8 9
k k k k
Ch7_13.c
j j j j
main() 例 数组排序----简单选择排序 { int a[10],i; for(i=0;i<10;i++) void sort(int array[],int n) scanf("%d",&a[i]); { int i,j,k,t; sort(a,10); for(i=0;i<n-1;i++) for(i=0;i<10;i++) { k=i; printf("%d ",a[i]); for(j=i+1;j<n;j++) printf("\n"); if(array[j]<array[k]) k=j; } if(k!=i) a { t=array[i]; 9 array array[i]=array[k]; 13 27 array[k]=t; i=8 32 } 49 } 57 }
数组名作函数参数
地址传递 在主调函数与被调函数分别定义数组,且类型应一致 形参数组大小(多维数组第一维)可不指定 形参数组名是地址变量
形参用数组定义,
例 求学生的平均成绩 #include <stdio.h> float average(int stu[10], int n); void main() { int score[10], i; float av; printf("Input 10 scores:\n"); for( i=0; i<10; i++ ) scanf("%d", &score[i]); av=average(score,10); printf("Average is:%.2f", av); }
7.5 数组作为函数参数
数组元素作函数实参——值传递
#include <stdio.h> 例 main()两个数组大小比较 Ch7_10.c { int a[10],b[10],i,n=0,m=0,k=0; a b int large(int x,int y) a和b为有10个元素的整型数组 for(i=0;i<10;i++) 0 12 i 43 {0 int flag; 比较两数组对应元素 scanf("%d",&a[i]); 1 23 i 1 if(x>y) flag=1; 23 变量n,m,k记录a[i]>b[i], a[i]==b[i], for(i=0;i<10;i++) else if(x<y) flag=-1; i 2 56 2 21 a[i]<b[i]的个数 scanf("%d",&b[i]); else flag=0; i 3 10 98 3 最后 for(i=0;i<10;i++) 若n>k,认为数组a>b return(flag); i 76 4 66 若n<k,认为数组a<b { if(large(a[i],b[i])==1) n=n+1; }4 88 若n==k,认为数组a==b 5 5 54 else if(large(a[i],b[i])==0)i m=m+1; else k=k+1; n=1 n=1 n=2 n=3 n=0 n=0 n=0 } m=1 m=1 m=1 m=1 m=0 m=0 m=1 k=1 k=2 k=2 k=2 k=0 k=1 k=1 /* Output */ }