C程序设计 (第四版) 谭浩强 例 7.14
例 7.14 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法:使用指针、动态分配内存
#include <stdio.h>
#include <stdlib.h>
#define N 10
float Max = 0;
float Min = 0;
void initialStu(float **stu, int n){
*stu = (float*)malloc(n * sizeof(float));
}
void inputStu(float *stu, int n){
printf("Enter the scores of %d students: ", n);
for(int i = 0; i < n; i++){
scanf("%f", &stu[i]);
}
}
float average(float *stu, int n){
float sum = 0.0;
Max = stu[0];
Min = stu[0];
for(int i = 0; i < n; i++){
sum += stu[i];
if(stu[i] > Max){
Max = stu[i];
}
if(stu[i] < Min){
Min = stu[i];
}
}
return sum / (float)n;
}
void outputStu(float *stu, int n, float average(float*, int)){
printf("Max = %.2f Min = %.2f Average = %.2f\n", Max, Min, average(stu, n));
}
int main(){
float *stu = NULL;
initialStu(&stu, N);
inputStu(stu, N);
outputStu(stu, N, average);
free(stu);
system("pause");
return 0;
}