黑月黄龙 发表于 2021-11-30 19:57:23

定义函数

数组a中存放着本班C语言期末考试的成绩,请补充代码,使其能实现求平均成绩、最高分、最低分及打印出补号学生的学号(1号学生的成绩存在数组的0号元素中,如果学号对应的同学退学或缺考,则输入分数为-1。注意退学的学生不能计入学生总数)。

#include <stdio.h>



int main()

{

    float a,avg,max,min;

    int n,i;

    printf("请输入本班学号的最大值:");

    scanf("%d",&n);

    printf("请输入学生成绩:\n");

    for(i=0;i<n;i++)

      scanf("%f",&a);

    avg=f(a,n,&max,&min);

    printf("平均分为:%.2f,最高分为:%.1f,最低分为:%.1f\n",avg,max,min);

    print(a,n);

}

函数要怎么定义?

jackz007 发表于 2021-11-30 20:05:29

本帖最后由 jackz007 于 2021-11-30 20:18 编辑

float f(int a[] , int n , int * max , int * min)
{
      int i , m , s                                                            ;
      for(i = 0 ; a < 0 && i < n ; i ++)                                    ;
      for(m = 1 , * max = * min = s = a , i ++ ; i < n ; i ++) {      
                if(a >= 0) {
                        if(a > * max) * max = a                            ;
                        else if(a < * min) * min = a                     ;
                        s += a                                                ;
                        m ++                                                   ;
                }      
      }
      return 1.0 * s / m                                                       ;
}

void print(int a[] , int n)                                                      ;
{
      int i                                                                  ;
      for(i = 0 ; i < n ; i ++) if(a >= 0) printf("%d %d\n" , i + 1 , a) ;
}

黑月黄龙 发表于 2021-11-30 20:07:14

jackz007 发表于 2021-11-30 20:05


大佬,那下面那个print(a, n);咋定义

jackz007 发表于 2021-11-30 20:19:14

黑月黄龙 发表于 2021-11-30 20:07
大佬,那下面那个print(a, n);咋定义

      2 楼的代码已经更新

傻眼貓咪 发表于 2021-11-30 20:41:40

#include <stdio.h>

int max = -2147483648, min = 2147483647;
float avg;

void function(int n, int arr){
    int k = 0, sum = 0;
    for(size_t i = 0; i < n; i++){
      if(arr >= 0){
            max = max > arr ? max : arr;
            min = min < arr ? min : arr;
            sum += arr;
            k++;
      }
    }
    avg = (float)sum/k;
}


int main()
{
    int n;
    printf("请输入本班学号的最大值:");
    scanf("%d", &n);
    int arr;
    printf("请输入学生成绩:");
    for(size_t i = 0; i < n; i++) scanf("%d", &arr);
    function(n, arr);
    printf("最高分为:%d\n最低分为:%d\n平均分为:%.2f", max, min, avg);
    return 0;
}
页: [1]
查看完整版本: 定义函数