C语言 7.5 数组作为函数参数

更新时间:2023-08-20 07:13:01 阅读量: 高等教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课件

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 */ }

C语言课件

数组名作函数参数

地址传递 在主调函数与被调函数分别定义数组,且类型应一致 形参数组大小(多维数组第一维)可不指定 形参数组名是地址变量

C语言课件

形参用数组定义,

例 求学生的平均成绩 #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); }

实参用数组名 . .

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

0 1 2 12 23 56 …. …. 88

stu

9

C语言课件

例 数组元素与 数组名 作函数参数比较

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]); }

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]

C语言课件

#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]); }

a 1 2 调用前 a x 1 2 调用 a x a 2 1 交换 2 1 返回

C语言课件

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 76 88 6 7 8 9

Ch7_13.c

k j j j j j j j j j

k k

C语言课件

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 }

27 13 68 76 88 6 7 8 9

C语言课件

C语言课件

C语言课件

本文来源:https://www.bwwdw.com/article/pz3j.html

Top