A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_byrDDXsc 中级黑马   /  2016-3-25 20:48  /  1211 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
写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 */




6 个回复

倒序浏览
回复 使用道具 举报
{:3_55:}{:3_55:}{:3_55:}
回复 使用道具 举报
好长                                                            
回复 使用道具 举报
好长啊!
回复 使用道具 举报
回复 使用道具 举报
楼上的楼上你好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马