排序函数参数用指针就可以。使用动态内存存储数组元素。
下面的代码通过malloc和realloc动态申请内存。读取数组元素时,以输入回车符结束。
排序采用冒泡排序算法。
运行结果如下:
代码:
#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!