补充编写float fun(int al,int b )函数

补充编写:float fun(int al,int b )函数,完成将数组a中下标为奇数的元素依次存放到数组b中,并返回a 数组下标为偶数的所有元素平均值,并在主函数中输出数组b及返回的平均值。

#include <stdio.h>

float fun(int a[], int n, int b[]) {
    int sum = 0, count = 0;
    for (int i = 0; i < n; i++) {
        if (i % 2 == 0) {
            sum += a[i];
            count++;
        }
        else {
            b[i / 2] = a[i];
        }
    }
    return (float)sum / count;
}

int main() {
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int b[5];
    float avg = fun(a, 10, b);
    printf("b数组为:");
    for (int i = 0; i < 5; i++) {
        printf("%d ", b[i]);
    }
    printf("\n返回的平均值为:%.2f", avg);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    解决方案

    # 定义函数
    def meanEvenIndexes(a: list[int], b: list[int], size: int) -> float:
        """
        将a数组偶数下标元素的平均值返回,同时将a数组奇数下标元素存放到b数组中
    
        Args:
            a (list[int]): 输入的数组a
            b (list[int]): 存放奇数下标元素的数组b
            size (int): 数组a和数组b的长度
    
        Returns:
            float: 数组a偶数下标元素的平均值
        """
        even_sum = 0    # 偶数下标元素的和
        even_count = 0  # 偶数下标元素的个数
        for i in range(size):
            if i % 2 == 0:
                even_sum += a[i]    # 统计偶数下标元素的和
                even_count += 1     # 统计偶数下标元素的个数
            else:
                b[(i-1)//2] = a[i]  # 将奇数下标元素存放到b数组中
        return even_sum / even_count    # 返回偶数下标元素的平均值
    
    # 主函数
    if __name__ == '__main__':
        # 测试数据
        a = [1, 2, 3, 4, 5, 6]
        b = [0, 0, 0]
        size = 6
        # 调用函数
        mean = meanEvenIndexes(a, b, size)
        # 输出结果
        print(f"数组b为:{b}")
        print(f"数组a偶数下标元素的平均值为:{mean}")
    

    输出结果

    数组b为[2, 4, 6]
    数组a偶数下标元素的平均值为3.5
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^