要求定义一个函数实现对任意长度数组的排序的操作, 并计算最大值、最小值、平 均值。 在主程序中,定义一个数组,并通过 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 echarts动画效果失效的问题。官网下载的例子。
- ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
- ¥15 Attention is all you need 的代码运行
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加