用c语言写一个求数组的中间值跟平均值
时间: 2024-02-23 12:01:23 浏览: 122
好的,下面是用C语言实现求一个数组的中间值和平均值的代码:
```c
#include <stdio.h>
int main() {
int arr[] = {5, 6, 9, 12, 13, 16, 20};
int len = sizeof(arr) / sizeof(arr[0]);
int sum = 0;
double avg;
int mid;
// 求和
for (int i = 0; i < len; i++) {
sum += arr[i];
}
// 求平均值
avg = (double)sum / len;
// 求中间值
if (len % 2 == 0) {
mid = (arr[len / 2 - 1] + arr[len / 2]) / 2;
} else {
mid = arr[len / 2];
}
printf("平均值为:%.2lf\n", avg);
printf("中间值为:%d\n", mid);
return 0;
}
```
这个程序中,我们首先定义了一个包含一些整数的数组,然后通过计算数组的长度和求和来计算平均值。对于中间值,我们需要首先判断数组的长度是奇数还是偶数,然后再进行计算。最后我们打印出平均值和中间值。
相关问题
用c语言写一个查找数组中的中位数,要求使用2个自定义函数 1)自定义函数sort实现数组排序 2)自定义函数medi查找并输出当前数组中位数
好的,以下是用C语言实现的代码示例:
```c
#include <stdio.h>
// 自定义函数sort实现数组排序
void sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// 自定义函数medi查找并输出当前数组中位数
double medi(int arr[], int n) {
if (n % 2 == 0) {
// 若数组长度为偶数,则取中间两个数的平均值
return (arr[n/2-1] + arr[n/2]) / 2.0;
} else {
// 若数组长度为奇数,则直接取中间数
return arr[n/2];
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, n);
printf("排序后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("数组的中位数为:%.1f\n", medi(arr, n));
return 0;
}
```
在上述代码中,我们同样是先通过自定义函数sort实现了对数组的排序,然后通过自定义函数medi查找并输出当前数组中位数。最后,我们对上述两个函数进行了简单的测试。
需要注意的是,在medi函数中我们使用了整除运算符,这是C语言中常用的整数除法运算符,返回的结果是一个整数。而为了得到中位数的准确值,我们在其中使用了浮点数除法运算符,即除以2.0。
C语言输入n个数字求中间值
在C语言中,如果你想要输入n个数字并找出其中的中间值,可以采用以下步骤:
1. 首先,你需要声明一个数组来存储这n个数,并初始化一个变量`count`来记录输入的元素个数,以及两个指针`start`和`end`分别表示开始和结束位置。
2. 使用`for`循环从用户那里获取输入,直到达到指定的数字个数n。每次读取一个数,将其添加到数组中并将`count`加一。
3. 当所有数值输入完毕后,确认`count`是否为奇数还是偶数。如果`count`是奇数,那么中间值就是数组中第`count / 2 + 1`个元素;如果是偶数,中间值则是第`count / 2`个元素和第`count / 2 + 1`个元素的平均值。
4. 使用指针计算中间值的具体位置,然后将该位置的数组元素作为中间值返回。
下面是一个简单的示例代码片段,假设我们已经有一个动态大小的整型数组`nums`:
```c
#include <stdio.h>
double findMiddle(int *nums, int count) {
if (count % 2 == 0) { // 偶数个数
return (nums[count / 2 - 1] + nums[count / 2]) / 2.0;
} else { // 奇数个数
return nums[count / 2];
}
}
int main() {
int n, i = 0;
printf("Enter the number of elements (n): ");
scanf("%d", &n);
// 创建数组并获取输入
int *nums = malloc(n * sizeof(int));
for (; i < n; ++i) {
scanf("%d", &nums[i]);
}
// 计算并输出中间值
double middleValue = findMiddle(nums, n);
printf("The middle value is: %.2f\n", middleValue);
free(nums); // 释放内存
return 0;
}
```
阅读全文