【例8.4】从键盘输入某班学生某科成绩(每班人数不超过40人,具体由键盘输入),求其平均分。
#include<stdio.h>
#define N 40
int Average(int score[],int n);
void ReadScore(int score[],int n);
int main()
{
• int score[N],aver,n;
• printf("Input n:");//输入有多少个学生的数据,即score的实际长度
• scanf("%d",&n);
• ReadScore(score,n);//数组名字作为函数实参调用函数
• aver = Average(score,n);
• printf("Average score is %d \n",aver);
• return 0;
}
//计算学生的平均分
int Average(int score[],int n)
{
• if (n<=0) return -1;//判断是否有非法输入
• int i,sum=0;
• for(i=0;i<n;i++)
• {
• sum+=score[i];
• }
• return n>0?sum/n:-1;//判断是否有非法输入
}
//输入学生的成绩
void ReadScore(int score[],int n)
{
• int i;
• printf("Input score:");
• for ( i = 0; i < n; i++)
• {
• scanf("%d",&score[i]);
• }
}
-
若要把一个数组传递给一个函数,那么只要使用不带方括号的数组名即可,因为数组名就代表了数组第一个元素的地址,实际上就是将数组的地址传给被调函数。
-
将数组的首地址传给被调函数后,实参和形参占据的是同一段存储单元,因此,当被调函数修改形参数组元素时,实际上相当于修改实参数组的元素值。
-
tips:数组的长度可以不出现在数组后面的方括号内,通常用另一个形参来指定数组长度。如果方括号内出现正数,编译器并不会生成相应长度的数组,也不会进行越界检查;当方括号内出现负数则编译错误。数组名后的方括号内数字不能表示真正接收数组的大小。