要求定义一个函数实现对任意长度数组的排序的操作, 并计算最大值、最小值、平 均值。 在主程序中,定义一个数组,并通过 scanf 输入数组中每个元素的值,调用 该函数后,打印该数组的最大值、最小值、平均值和排序结果
4条回答 默认 最新
- 技术专家团-小桥流水 2023-01-01 09:33关注
用malloc动态申请内存,如果超出,再用realloc扩容。C语言运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> void bubbleSort(double* a, int n) { int i, j; double t; //冒泡排序 for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (a[j] > a[j + 1]) //从小到大排序,排序完成后,a[0]就是最小值,a[n-1]就是最大值 { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //计算数据的总和 t = 0; for (i = 0; i < n; i++) t += a[i]; printf("最大值:%g\n", a[n - 1]); printf("最小值:%g\n", a[0]); printf("平均值:%g\n", t / n);//输出平均值 printf("排序结果:\n"); for (i = 0; i < n; i++) printf("%g ", a[i]); } int main() { int n = 0; char ch; int size = 1000; double* p = (double*)malloc(sizeof(double) * size); printf("请输入一组数据,以回车结束:\n"); while (1) { scanf("%lf", &p[n]); n++; if (n == size) { size += 1000; p = (double*)realloc(p, sizeof(double) * size);//扩容 } ch = getchar(); if (ch == '\n') break; } bubbleSort(p, n); //调用函数 //释放内存 free(p); p = 0; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 机器人轨迹规划相关问题
- ¥15 word样式右侧翻页键消失
- ¥15 springboot+vue 集成keycloak sso到阿里云
- ¥15 win7系统进入桌面过一秒后突然黑屏
- ¥30 backtrader对于期货交易的现金和资产计算的问题
- ¥15 求C# .net4.8小报表工具
- ¥15 安装虚拟机时出现问题
- ¥15 Selenium+docker Chrome不能运行
- ¥15 mac电脑,安装charles后无法正常抓包
- ¥18 visio打开文件一直显示文件未找到