关于c语言的问题函数

  1. 要求定义一个函数实现对任意长度数组的排序的操作, 并计算最大值、最小值、平
    均值。 在主程序中,定义一个数组,并通过 scanf 输入数组中每个元素的值,调用
    该函数后,打印该数组的最大值、最小值、平均值和排序结果

排序函数参数用指针就可以。使用动态内存存储数组元素。
下面的代码通过malloc和realloc动态申请内存。读取数组元素时,以输入回车符结束。
排序采用冒泡排序算法。
运行结果如下:

img

代码:

#include <stdio.h>
#include <stdlib.h>

//排序
void bubbleSort(double* p,int n)
{
    int i,j;
    double t;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(p[j] > p[j+1])
            {
                t = p[j];
                p[j] = p[j+1];
                p[j+1]= t;
            }
        }
    }
}


int main()
{
    double* p = 0;
    int n = 0; //数组元素个数
    int i;
    int size = 10;
    double ave=0;
    char ch;
    p = (double*)malloc(sizeof(double)*size);
    while(1)
    {
        if(n == size)
        {
            size += 10; //大小扩充10
            p = (double*)realloc(p,sizeof(double)*size);//重新分配内存
        }
        scanf("%lf",&p[n]);
        ave += p[n]; //累加
        n++;
        
        ch = getchar();
        if(ch == '\n')//输入回车符结束
            break;
    }
    bubbleSort(p,n);
    printf("最大值:%g\n",p[n-1]);
    printf("最小值:%g\n",p[0]);
    printf("平均值:%g\n",ave/n);
    printf("排序后的结果:\n");
    for(i=0;i<n;i++)
        printf("%g ",p[i]);
    free(p);
    p = 0;
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632