C语言编程题库与实战:数组排序与平均值计算
3星 · 超过75%的资源 需积分: 41 35 浏览量
更新于2024-11-11
1
收藏 567KB TXT 举报
"C语言机试题库,包含填空题和编程题,用于企业内部培训,更新至2008年9月。"
本文将详细分析两个C语言编程题目,旨在帮助读者理解C语言的基本概念和操作技巧。
第一个题目涉及数组的排序。问题的核心是实现一个名为`fun`的函数,该函数接受一个整数数组`a`和数组大小`n`作为参数,其目的是找到数组中的最大值和次大值,并交换它们的位置。原始代码已完成了找到最大值和次大值的任务,但在实际交换元素时出现了错误。在注释中找到的两行交换代码:
```c
t=a[0];a[0]=a[m1];a[m1]=t;
t=a[1];a[1]=a[m2];a[m2]=t;
```
这里,代码试图交换数组的第一个元素`a[0]`与最大值索引对应的元素`a[m1]`,以及数组的第二个元素`a[1]`与次大值索引对应的元素`a[m2]`。然而,这种方法假设数组始终至少有两个元素,这在n=1或n=2时可能会导致错误。正确的做法是在交换之前检查`n`的值,确保至少有三个元素存在,或者调整交换逻辑以适应不同情况。
第二个题目要求计算一组浮点数的平均值和中位数。函数`fun`接收一个浮点数数组`s`,数组长度`n`,以及一个指向平均值的指针`aver`。目标是计算数组的平均值并存储到`*aver`,同时返回中位数。注意,题目要求中位数应四舍五入到最接近的整数。原始代码缺少计算中位数的部分。计算平均值的循环是正确的,但需要添加额外的代码来确定中位数,例如,对数组进行排序,然后根据数组长度的奇偶性计算中位数。
以下是完成后的`fun`函数示例:
```c
#include <stdlib.h>
int fun(float *s, int n, float *aver) {
float ave = 0.0, t = 0.0;
int count = 0, k, i;
for (k = 0; k < n; k++)
t += s[k];
ave = t / n;
*aver = ave;
// 排序数组
for (i = 0; i < n - 1; i++) {
for (k = 0; k < n - 1 - i; k++) {
if (s[k] > s[k + 1]) {
t = s[k];
s[k] = s[k + 1];
s[k + 1] = t;
}
}
}
// 计算中位数
float median;
if (n % 2 == 0)
median = (s[n / 2 - 1] + s[n / 2]) / 2;
else
median = s[n / 2];
return (int)round(median);
}
// main 函数示例
int main() {
float arr[] = {80.5607, 290.5985, 1.5886, 4};
int n = sizeof(arr) / sizeof(arr[0]);
float average;
printf("原始数组: ");
for (i = 0; i < n; i++)
printf("%.2f ", arr[i]);
printf("\n");
int median = fun(arr, n, &average);
printf("平均值: %.2f\n中位数: %d\n", average, median);
return 0;
}
```
通过这两个题目,我们可以复习到C语言中的数组操作、循环、条件判断、函数定义、指针使用以及数值计算等基础知识。此外,还涉及到了数组排序(冒泡排序)和寻找数组中位数的方法,这些都是C语言编程中常见的问题解决技巧。
2020-02-07 上传
107 浏览量
2021-10-10 上传
283 浏览量
点击了解资源详情
点击了解资源详情
yuxiangzi328
- 粉丝: 0
- 资源: 25
最新资源
- README_Generator
- designpatterns:设计模式
- reviews:回顾我参加的一些在线CS课程
- mmpose和openpose的onnx导出
- AMI_CRT-0.1-py3-none-any.whl.zip
- ASP Jscript Calendar-开源
- 梦境前端
- nodesql:带有SQL Server的节点
- wiki.central.ntua.gr
- TU-Chemnitz-thesis-pandoc:使用 pandoc 的 TU-Chemnitz 模板
- learn_flutter_with_git
- Scrumdidilyumptio.us-开源
- My Template-开源
- AMQPStorm-2.6.2-py2.py3-none-any.whl.zip
- oslfrobot.github.io:有关一个传感器行跟随器机器人的网站,该机器人还可以避开物体并进行自动校准
- 仓库SWWReact节点MySQL