
C身申设叶在线开放课程 函数 数组作为函数参数 主讲:曾志华
函 数 ——数组作为函数参数 在线开放课程 主讲:曾志华

一.数组元素作为函数参数 程序设计 数组元素作为函数实参和一个普通变量用法相同,把数组元素的 值传送给形参。 函数调用时值传送是把实参变量的值赋予形参变量
一. 数组元素作为函数参数 数组元素作为函数实参和一个普通变量用法相同,把数组元素的 值传送给形参。 函数调用时值传送是把实参变量的值赋予形参变量

一.函数的嵌套调用-举例 (身程设计 例:随意输入一个字符串,统计该字符串中字母的个数。 *此函数用于判断是否是字母* void main() int isletter(char c) int i=0;int num =0; if(c>=a'&&c=A'&&C<=z') gets(str); return 1; while(str[i]!=\0) else return 0; if(isletter(str[i])==1) num++; i++: } printf("字母个数=号d",num);
例:随意输入一个字符串,统计该字符串中字母的个数。 一.函数的嵌套调用-举例 /* 此函数用于判断是否是字母*/ int isletter(char c) { if(c>=‘a’&&c=‘A’&&C<=‘Z’) return 1; else return 0; } void main() { int i=0; int num = 0; char str[255]; gets(str); while(str[i]!=‘\0’) { if(isletter(str[i])==1) num++; i++; } printf(“字母个数=%d”,num); }

二.数组名作为函数参数 语身程疗设计 数组名实际上是一个常量地址,当用数组名作为实参时,实际上 是把该常量地址传给形参。 形参数组并不分配接收实参数组元素的数据空间,只是分配一个 接收常量地址。门
二.数组名作为函数参数 数组名实际上是一个常量地址,当用数组名作为实参时,实际上 是把该常量地址传给形参。 形参数组并不分配接收实参数组元素的数据空间,只是分配一个 接收常量地址

二.数组名作为函数参数-举例 例:已知某个学生10门课程的成绩,求平均成绩。平均成绩要求采用 函数来实现。 /*此函数用于求平均值*/ void main ( float aver (float a[10]) float score[10],av; int i; int i=0; float average,sum=0; for(i=0;i<10;i++) for(i=0;i<10;i++) sum+=a[i]; scanf ("%f",&score[i]); average sum/10; return average; av aver(score); printf("平均分为号5.2f\n",aw);
二.数组名作为函数参数-举例 例:已知某个学生10门课程的成绩,求平均成绩。平均成绩要求采用 函数来实现。 /* 此函数用于求平均值*/ float aver(float a[10]) { int i ; float average ,sum=0; for(i=0;i<10;i++) sum+=a[i]; average = sum/10; return average; } void main() { float score[10],av; int i = 0; for(i=0;i<10;i++) { scanf("%f",&score[i]); } av = aver(score); printf("平均分为%5.2f\n",av); }

二.数组名作为函数参数-说明 (身程序设计 》说明: ·用数组名作为实参时,被调用函数中对应的形参也是数组,且数 据类型必须与实参一致。 ·用数组名作为实参时,不是把数组元素的值传递给形参,而是把 实参数组的首元素的地址传递给形参数组。 ·通常为了能够让函数处理不同长度的数组,函数的参数表应指定 接收数组名及数组大小。一维形参数组可以省略维数,但是不能 省略]!
二.数组名作为函数参数-说明 说明: 用数组名作为实参时,被调用函数中对应的形参也是数组,且数 据类型必须与实参一致。 用数组名作为实参时,不是把数组元素的值传递给形参,而是把 实参数组的首元素的地址传递给形参数组。 通常为了能够让函数处理不同长度的数组,函数的参数表应指定 接收数组名及数组大小。一维形参数组可以省略维数,但是不能 省略[ ] !

三.两种方式的比较 膏程疗设计 例:通过函数调用,实现数组中两个元素的交换。 数组元素作为函数参数 /*此函数用于元素交换*/ void main ( void swap(int x,int y) f inta[2]={3,5}; int temp; swap(a[0],a[1]); temp x; printf("a[0]=号dna[1]=号d\n",a[0],a[1]) x=yi y=temp; 输出结果:a[0]=3 a[1]=5
三.两种方式的比较 例:通过函数调用,实现数组中两个元素的交换。 数组元素作为函数参数 /* 此函数用于元素交换*/ void swap(int x,int y) { int temp; temp = x; x = y; y = temp; } void main() { int a[2]={3,5}; swap(a[0],a[1]); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); } 输出结果: a[0]=3 a[1]=5

三.两种方式的比较 身壳程序设计 例:通过函数调用,实现数组中两个元素的交换。 数组名作为函数参数 /*此函数用于元素交换*/ void main() void swap(int x[]) inta[2]={3,5}; int temp; swap(a); temp x[]; printf("a[0]=号dna[1]=号d\n",a[0],a[1]) x[0]=x[1]: x[1]temp; 输出结果:a[0]=5 a[1]=3
三.两种方式的比较 例:通过函数调用,实现数组中两个元素的交换。 数组名作为函数参数 /* 此函数用于元素交换*/ void swap(int x[]) { int temp; temp = x[0]; x[0] = x[1]; x[1] = temp; } void main() { int a[2]={3,5}; swap(a); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); } 输出结果:a[0]=5 a[1]=3

习题 程序设计 1字符串转化为整型数组 需要实现一个convert函数,将一个字符串转换成整数数组。例如,我们将字符串 "ABd9wo5"转换成整数数组后的结果为:165661005711911153 Enter
1 字符串转化为整型数组 需要实现一个convert函数,将一个字符串转换成整数数组。例如,我们将字符串 "ABd9wo5"转换成整数数组后的结果为: 1 65 66 100 57 119 111 53 习题

inta[100]; int convert(char c[]) C程设计 int len =0; int i; for(i =0;c[i]!'\0';i++) 1en+; a[i订=(int)c[i] return len; int main(){ char s[80]; cin >sj int len convert(s); for (int i =0;i<lens i++){ printf("%d ",i)3 } return 0;