/* 写1个程序,接收输入班级的人数, 然后依次的输入每1个学员的成绩. 将学员的成绩存储在数组之中. 输入完毕之后, 显示总成绩和平均成绩.
然后再去掉1个最高分和1个最低分, 再计算平均成绩.
分析: 1.循环接收用户输入,存入数组. 2.计算数组的累加和和平均值. 3.找出最大值和最小值,将剩下的求平均值.
多文件 */ main.c
#include <stdio.h> #include "jiSuanScore.h" int main() { //1.循环接收用户输入,存入数组. int len = 0; len = getLen(len); double arr[len]; getArr(arr,len); //2.计算数组的累加和和平均值. double sum = getSum(arr, len); daYinSum(sum); daYinAver(sum, len); //3.找出最大值和最小值,将剩下的求平均值. getAndDaYinAver_2(sum, getMax(arr, len), getMin(arr, len), len);
}
jiSuanScore.c
#include "jiSuanScore.h" /** * 接收用户输入的长度 * * @param len 长度 * * @return 数组的长度 */ int getLen(int len) { printf("请输入人数:"); scanf("%d",&len); return len; } /** * 接收成绩存入数组 * * @param arr 数组 * @param len 长度 * * @return 成绩数组 */ void getArr(double arr[],int len) {
for (int i = 0; i < len; i++) { printf("请输入第%d个成绩:",i+1); scanf("%lf",&arr); }
} /** * 求累加和 * * @param arr 成绩数组 * @param len 长度 * * @return 累加和 */ double getSum(double arr[],int len) { double sum = 0; for (int i = 0; i < len; i++) { sum = sum + arr; } return sum; } /** * 求最大值 * * @param arr 数组 * @param len 长度 * * @return 最大值 */ double getMax(double arr[],int len) { double max = INT32_MIN; for (int i = 0; i < len; i++) { if (max < arr) { max = arr; } }
return max; } /** * 求最小值 * * @param arr 成绩数组 * @param len 长度 * * @return 最小值 */ double getMin(double arr[],int len) { double min = INT32_MAX; for (int i = 0; i < len; i++) { if (min > arr) { min = arr; } }
return min; } /** * 求剩下的平均值并且打印 * * @param sum 累加和 * @param max 最大值 * @param min 最小值 * @param len 长度 */ void getAndDaYinAver_2(double sum,double max,double min,int len) { double sum_2 = sum - max - min; double aver_2 = sum_2 / (len - 2); printf("去掉最大值和最小值之后的平均值是:%.2lf\n",aver_2); } //打印累加和 void daYinSum(double sum) { printf("累加和是:%.2lf\n",sum); } //打印平均值 void daYinAver(double sum,int len) { printf("平均值是:%.2lf\n",sum/len); }
jiSuanScore.h
#ifndef jiSuanScore_h #define jiSuanScore_h
#include <stdio.h>
/** * 接收用户输入的长度 * * @param len 长度 * * @return 数组的长度 */ int getLen(int len);
/** * 接收成绩存入数组 * * @param arr 数组 * @param len 长度 * * @return 成绩数组 */ void getArr(double arr[],int len);
/** * 求累加和 * * @param arr 成绩数组 * @param len 长度 * * @return 累加和 */ double getSum(double arr[],int len);
/** * 求最大值 * * @param arr 数组 * @param len 长度 * * @return 最大值 */ double getMax(double arr[],int len);
/** * 求最小值 * * @param arr 成绩数组 * @param len 长度 * * @return 最小值 */ double getMin(double arr[],int len);
/** * 求剩下的平均值并且打印 * * @param sum 累加和 * @param max 最大值 * @param min 最小值 * @param len 长度 */ void getAndDaYinAver_2(double sum,double max,double min,int len);
void daYinSum(double sum);
void daYinAver(double sum,int len);
#endif /* jiSuanScore_h */
|