向函数传递一维数组实例
【例8.5】从键盘输入某班学生某门课的成绩(每班最多不超过40人),当输入成绩为负时,表示输入结束,试编程计算并输出其平均分,并输出实际输入学生人数
思路
1.实现存储某班同学成绩--->数组创建
2.实现录入成绩功能--->数组的输入
3.实现计算平均分功能--->数组的遍历并返回平均值
4.输出实际输入学生数量--->设置int i为计数器
5.考虑到可能输入数为0的情况
注意事项
1.调用含有数组的函数,实参为数组名(数组的首地址)
2.含有数组,并且函数需要遍历时,形参为:函数名 和 数组长度
如:int Average(int score[], int n)
3.数组计数是从0开始的
4.输入非法判断(如:输入数为0而0不能做为被除数)return n>0? sum/n:-1;进行简单判断
具体实现:代码如下(偷懒版)
#include<stdio.h>
#define N 40
int Average(int score[],int n);
int ReadScore(int score[]);
/*
从键盘输入某班学生某门课的成绩(每班最多不超过40人),当输入成绩为负时,表示输入结束,试编程计算并输出其平均分,并输出实际输入学生人数
*/
int main(void){
int score[N],aver,n;
n=ReadScore(score);//传入的为score数组的首地址socre
printf("Total students are %d\n",n);
aver=Average(score,n);
printf("Average=%d\n",aver);
return 0;
}
//函数功能:计算n个学生的成绩平均分
Average(int score[],int n){
int i,sum=0;
for(int i=0;i<=0;i++){
sum+=score[i];//TODO
}
return n>0?sum/n:-1;
}
//函数功能:输入学生某门课成绩,当成绩为负数时,结束输入,并且返回学生人数
int ReadScore(int score[]){
int i=-1;
do{
i++;
printf("Input score:");
scanf("%d",&score[i]);
}while(score[i]>=0);
return i;
}