鱼C论坛

 找回密码
 立即注册
查看: 699|回复: 4

定义函数

[复制链接]
发表于 2021-11-30 19:57:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

#include <stdio.h>



int main()

{

    float a[100],avg,max,min;

    int n,i;

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

    scanf("%d",&n);

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

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

      scanf("%f",&a[i]);

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

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

    print(a,n);

}

函数要怎么定义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i] < 0 && i < n ; i ++)                                    ;
        for(m = 1 , * max = * min = s = a[i] , i ++ ; i < n ; i ++) {        
                if(a[i] >= 0) {
                        if(a[i] > * max) * max = a[i]                            ;
                        else if(a[i] < * min) * min = a[i]                       ;
                        s += a[i]                                                ;
                        m ++                                                     ;
                }       
        }
        return 1.0 * s / m                                                       ;
}

void print(int a[] , int n)                                                      ;
{
        int i                                                                    ;
        for(i = 0 ; i < n ; i ++) if(a[i] >= 0) printf("%d %d\n" , i + 1 , a[i]) ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-30 20:07:14 | 显示全部楼层

大佬,那下面那个print(a, n);咋定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-30 20:19:14 | 显示全部楼层
黑月黄龙 发表于 2021-11-30 20:07
大佬,那下面那个print(a, n);咋定义

        2 楼的代码已经更新
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-30 20:41:40 | 显示全部楼层
#include <stdio.h>

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

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


int main()
{
    int n;
    printf("请输入本班学号的最大值:");
    scanf("%d", &n);
    int arr[n];
    printf("请输入学生成绩:");
    for(size_t i = 0; i < n; i++) scanf("%d", &arr[i]);
    function(n, arr);
    printf("最高分为:%d\n最低分为:%d\n平均分为:%.2f", max, min, avg);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 16:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表